Kotlin/포스팅

코틀린 영역 함수

짜집퍼박사(짜박) 2023. 12. 31. 03:35

코틀린에서 영역 함수(scope function)는 수신 객체에 대해 코드 블록을 실행하면서 유용한 작업을 수행하는 함수입니다. Kotlin 표준 라이브러리에는 다섯 가지의 영역 함수가 있습니다.

let, run, with, apply, also
이러한 영역 함수들은 주로 널이 아닌 객체를 다룰 때, 혹은 객체의 초기화 블록에서 사용됩니다.

 

1. let

val result = "Hello, Kotlin".let {
    println(it) // 출력: Hello, Kotlin
    it.length
}

println(result) // 출력: 13

- let 함수는 수신 객체를 람다 블록에 전달하고, 람다 블록의 결과를 반환합니다.
- it은 수신 객체를 가리키는 표기법입니다.

 

2. run

val result = run {
    val message = "Hello, Kotlin"
    println(message) // 출력: Hello, Kotlin
    message.length
}

println(result) // 출력: 13

- run 함수는 블록 안에서 수신 객체를 사용하고, 블록의 결과를 반환합니다.
- run 블록 안에서는 수신 객체를 참조할 때 this를 사용할 수 있습니다.

 

3. with

val message = "Hello, Kotlin"
val result = with(message) {
    println(this) // 출력: Hello, Kotlin
    length
}

println(result) // 출력: 13

- with 함수는 수신 객체를 블록에 전달하고, 블록 안에서 수신 객체를 this로 참조합니다.
- with는 확장 함수가 아니라 최상위 함수로 사용됩니다.

 

4. apply

val message = StringBuilder().apply {
    append("Hello")
    append(", ")
    append("Kotlin")
}.toString()

println(message) // 출력: Hello, Kotlin

- apply 함수는 수신 객체를 블록에 전달하고, 블록 안에서 수신 객체를 참조하는 대신 수신 객체 자체를 반환합니다.
- apply는 주로 객체의 초기화 블록에서 사용됩니다.

 

5. also

val message = "Hello, Kotlin".also {
    println(it) // 출력: Hello, Kotlin
}.length

println(message) // 출력: 13

- also 함수는 수신 객체를 블록에 전달하고, 블록 안에서 수신 객체를 참조하면서 수신 객체 자체를 반환합니다.
- also는 주로 수신 객체에 부수적인 작업을 수행할 때 사용됩니다.

 

이러한 영역 함수들은 코드를 간결하게 만들고, 객체 초기화 또는 변형, 로깅 등의 작업을 효과적으로 수행할 수 있도록 도와줍니다. 선택적으로 it 또는 this를 사용하여 수신 객체에 접근할 수 있습니다. 영역 함수의 선택은 코드의 목적과 가독성에 따라 다를 수 있습니다.

 

With ChatGPT