Kotlin

영역 함수(scope functions)

주코식딩 2024. 2. 29. 11:26

코틀린의 영역 함수는 코드 블록( 중괄호로 감싸진 그거 )을 실행할 때 사용된다.

이 함수들은 코드를 더 간결하고 읽기 쉽게 만들어 줄 뿐만 아니라, 객체의 프로퍼티나 함수에 대한 접근을 임시적으로 제한할 수 있도록 해준다.

 

코틀린에서는 다섯 가지 영역 함수를 제공한다.

let

사용법: object.let { it.doSomething() }

수신 객체: it (명시적으로 사용)

반환 값: 람다의 마지막 표현식

주 사용 사례: null이 아닌 객체에 대한 일회성 작업, 객체 변환

 

run

사용법: object.run { this.doSomething() }

수신 객체: this (암시적으로 사용)

반환 값: 람다의 마지막 표현식

주 사용 사례: 객체 초기화와 반환 값 계산

 

with

사용법: with(object) { this.doSomething() }

수신 객체: this (암시적으로 사용)

반환 값: 람다의 마지막 표현식

주 사용 사례: 객체의 여러 메서드를 호출하고 결과를 반환할 때

 

apply

사용법: object.apply { this.doSomething() }

수신 객체: this (암시적으로 사용)

반환 값: 객체 자신

주 사용 사례: 객체 구성

 

also

사용법: object.also { it.doSomething() }

수신 객체: it (명시적으로 사용)

반환 값: 객체 자신

주 사용 사례: 추가적인 작업 수행, 디버깅

 

 

차이점과 선택 기준

let, also: it을 사용하여 수신 객체에 접근한다. 객체를 변경하지 않고 사용할 때 유용하다.

run, with, apply: this를 사용하여 수신 객체에 접근한다. 객체의 프로퍼티나 메서드에 대한 다수의 접근, 호출이 필요할 때 유용하다.

 

반환 값: apply와 also는 객체 자신을 반환하며, 나머지 함수들은 람다의 마지막 표현식을 반환한다.

 

영역 함수를 선택할 때는 코드의 목적과 해당 함수의 특성을 고려해야 한다. 

예를 들어, 객체를 초기화하고 그 객체를 반환해야 한다면 apply가 적합할 수 있다.

반면, 객체를 변환하거나 다른 타입을 반환해야 한다면 let이나 run이 더 적합할 수 있다.