[kotlin] 스코프 함수를 사용하여 객체 초기화하기

Kotlin에서는 스코프 함수라는 유용한 기능을 제공하여 객체를 초기화하고 사용할 수 있습니다. 스코프 함수는 let, run, with, apply, also 다섯 가지가 있으며, 각각의 사용 사례와 특징을 알아보겠습니다.

1. let

let 함수는 nullable 객체를 다룰 때 매우 유용합니다. 객체가 null이 아닌 경우에만 수행할 작업을 정의할 수 있습니다.

val name: String? = "John"
name?.let {
    println("Name is $it")
}

2. run

run 함수는 receiver object를 활용하여 객체의 속성이나 함수에 바로 접근할 수 있습니다.

val person = Person("John", 30)
val message = person.run {
    "My name is $name and I am $age years old"
}
println(message)

3. with

with 함수는 run 함수와 비슷하지만, receiver object 대신에 인자로 전달된 객체를 사용합니다.

val person = Person("John", 30)
val message = with(person) {
    "My name is $name and I am $age years old"
}
println(message)

4. apply

apply 함수는 객체의 초기화와 설정에 사용됩니다. 객체를 생성하고 그 안의 속성을 설정한 후, 해당 객체를 반환합니다.

val person = Person("John", 30).apply {
    address = "123 Main St"
    email = "john@email.com"
}

5. also

also 함수는 객체를 처리한 후에 원본 객체를 반환합니다. 객체의 상태를 변경하지 않고 로깅이나 부가적인 작업에 사용됩니다.

val numbers = mutableListOf(1, 2, 3)
numbers.also {
    println("Initial numbers: $it")
}.add(4)

스코프 함수를 적절히 활용하면 Kotlin에서 객체를 초기화하고 조작하는 작업을 더욱 간편하게 처리할 수 있습니다.

참고 문헌