본문 바로가기

개발 중얼거림

[Kotlin] 표준 함수 apply와 also의 차이점

[여긴 믿을 곳이 아닙니다.]

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