[kotlin] 스코프 함수의 종류와 사용법(let, run, with, apply, also)

Kotlin은 다양한 스코프 함수를 제공하여 코드를 간결하게 작성하고 가독성을 높일 수 있습니다. 각 스코프 함수는 특정한 상황에 맞게 사용됩니다. 이번 포스트에서는 다섯 가지 주요 스코프 함수(let, run, with, apply, also)에 대해 알아보겠습니다.

1. let

let은 null이 아닌 객체에서 코드 블록을 실행하고 새로운 값을 반환할 수 있습니다. 예를 들어:

val result = nullableValue?.let {
    // null이 아닌 경우에만 실행
    it.doSomething()
    "result"
}

2. run

run은 수신 객체의 함수를 호출하는 것과 같이 동작합니다. 블록 내에서 this를 사용하여 수신 객체에 접근합니다.

val result = "hello".run {
    // 수신 객체인 "hello"에 대해 동작
    this.toUpperCase()
}

3. with

with 함수는 수신 객체를 함수의 인자로 전달하여 블록 내에서 객체의 멤버에 직접 접근할 수 있습니다.

val result = with(person) {
    // person 객체의 멤버에 직접 접근
    "Name: $name, Age: $age"
}

4. apply

apply는 수신 객체를 초기화한 후 추가적인 설정을 하는 데 사용됩니다. 블록 내에서 수신 객체를 this로 참조할 수 있습니다.

val person = Person().apply {
    // 수신 객체에 추가적인 설정
    name = "John"
    age = 30
}

5. also

also는 객체를 이어가는 작업을 수행할 때 사용됩니다. 주로 로깅이나 중간 결과를 확인할 때 유용합니다.

val result = "hello".also {
    // 작업 수행 후 이어가는 작업 가능
    println("Length: ${it.length}")
}

이렇게 다섯 가지의 스코프 함수를 사용하여 코드를 더 읽기 쉽고 유연하게 작성할 수 있습니다. 이러한 스코프 함수들은 Kotlin에서 코드를 더 간결하게 작성하는 데 도움을 줍니다.

참고 자료: Kotlin Documentation - Scope Functions