Kotlin Scope Function 정리
Kotlin의 scope function에 대해 정리해보았다.
Kotlin Scope Function
Kotlin에는 객체의 컨텍스트에서 코드를 실행할 수 있도록 다양한 scope function이 제공됩니다. 대표적으로 let
, run
, with
, apply
, also
가 있습니다. 각각의 함수는 객체를 어떻게 참조하고, 반환값이 무엇인지에 따라 구분됩니다.
let
- 객체를 람다의 인자로 전달 (
it
) - 람다의 결과를 반환
- 주로 null 체크, 임시 범위 제한 등에 사용
val result = str?.let {
println(it)
it.length
}
run
- 객체를 람다의 receiver(
this
)로 사용 - 람다의 결과를 반환
- 객체 초기화와 계산 결과 반환에 적합
val length = str?.run {
println(this)
length
}
with
- 객체를 람다의 receiver(
this
)로 사용 - 람다의 결과를 반환
- 비확장 함수, 여러 객체의 연산을 묶을 때 사용
val result = with(str) {
println(this)
length
}
apply
- 객체를 람다의 receiver(
this
)로 사용 - 객체 자신을 반환
- 객체 설정/초기화에 주로 사용
val person = Person().apply {
name = "Choi"
age = 29
}
also
- 객체를 람다의 인자로 전달 (
it
) - 객체 자신을 반환
- 부수작업(로깅, 디버깅 등)에 사용
val list = mutableListOf<Int>()
list.also {
println("리스트 초기화: $it")
}.add(1)
비교 요약
함수 | 람다의 수신 객체 | 반환값 | 주 사용처 |
---|---|---|---|
let | it | 람다 결과 | null 체크, 임시 범위 |
run | this | 람다 결과 | 객체 초기화, 계산 |
with | this | 람다 결과 | 여러 연산 묶기 |
apply | this | 객체 자신 | 객체 설정/초기화 |
also | it | 객체 자신 | 부수작업 |
Kotlin의 scope function을 적절히 활용하면, 코드의 가독성과 유지보수성을 높일 수 있습니다.