코틀린의 영역 함수는 코드 블록( 중괄호로 감싸진 그거 )을 실행할 때 사용된다.
이 함수들은 코드를 더 간결하고 읽기 쉽게 만들어 줄 뿐만 아니라, 객체의 프로퍼티나 함수에 대한 접근을 임시적으로 제한할 수 있도록 해준다.
코틀린에서는 다섯 가지 영역 함수를 제공한다.
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이 더 적합할 수 있다.
'Kotlin' 카테고리의 다른 글
연산자 오버로딩(Operator Overloading) (0) | 2024.03.05 |
---|---|
수신 객체 지정 람다 (0) | 2024.02.29 |
코틀린의 정적 타입 (0) | 2024.02.19 |
자바에서 코틀린 컬렉션으로 (1) | 2024.02.13 |
확장함수를 사용해 직관적으로 변경하기 (0) | 2024.02.07 |