[여긴 믿을 곳이 아닙니다.]
parameter 접근 | 호출객체(Caller)를 리턴 | 코드블락 실행 결과 리턴 | |
this | apply | run | with |
it | also | let |
- 선택 기준:
- 객체 구성이 주목적이라면 apply를 사용하는 것이 더 자연스럽습니다.
- 부수 작업이나 로깅 등이 목적이라면 also를 사용하는 것이 더 명확할 수 있습니다.
- 수신 객체 지정 람다 (this vs it):
- apply: 람다 내부에서 this를 사용합니다. this는 생략 가능합니다.
- also: 람다 내부에서 it을 사용합니다. it은 명시적으로 써야 합니다.
- 반환값: 둘 다 수신 객체 자체를 반환
- 주요 용도:
- apply: 객체 초기화나 구성에 주로 사용됩니다.
- also: 부수 효과를 수행하거나 추가 작업을 할 때 주로 사용됩니다.
- 코드 가독성:
- apply: 객체의 프로퍼티를 직접 조작하는 것처럼 보입니다.
- also: 객체를 참조하여 작업하는 것이 더 명확히 보입니다.
- 실제 동작: 두 함수 모두 객체를 수정하고 그 객체를 반환하므로, 결과적으로 student2와 student3는 동일한 수정된 객체를 참조합니다.
var student2 = student.apply {
age = 15 // this.age = 15와 동일
name = "kim" // this.name = "kim"과 동일
}
var student3 = student.also {
it.age = 15
it.name = "kim"
}
두 함수의 사용 결과가 동일하지만, 코드의 의도와 가독성 측면에서 차이가 있습니다.
'개발 중얼거림' 카테고리의 다른 글
Kotlin 에서 SQLite 쓰기... (2) | 2024.09.02 |
---|---|
[Kotlin] Function Reference(::) (0) | 2024.08.29 |
[Kotlin] invoke란? (0) | 2024.08.29 |
[Kotlin] Sealed class vs Enum (0) | 2024.08.29 |