코틀린을 공부하다가 자바에는 없는 생소한 함수들이 존재해서 관련 함수들을 정리하고자 한다.
: 패키지, 클래스, 함수 등의 코드 블록 내에서 변수의 유효 범위를 뜻하며
상위 스코프에서 선언된 변수를 하위 스코프에서 사용하거나 재정의 해서 사용할 수 있지만
하위 스코프에서 선언된 변수는 상위 스코프에서 조회할 수 없다.
: 코틀린에서 객체의 범위를 지정하여 코드 블록을 실행하는 특별한 apply, also, let, run, with 5가지 함수로 객체의 생성, 초기화, 또는 조작 등 다양한 작업을 수행할 때 유용하게 사용한다.
apply
val result = SomeObject().apply {
// 수신 객체의 프로퍼티 설정
property1 = "value1"
property2 = "value2"
}
// result = SomeObject
also
val result = value?.also {
// 수신 객체를 활용한 작업
println("Value is: $it")
}
// result = value
let
val result = value?.let {
// 수신 객체를 활용한 작업
it + 10
}
// result = it + 10
run
val result = value?.run {
// 수신 객체를 활용한 작업
this + 10
}
// result = this + 10
apply, also, let, run 이라는 스코프 함수가 있으며 각자 사용방법이 다르다.
수신객체 자체를 전달하는 함수는 this로 접근하고 수신객체를 파라미터로 전달하는 함수는 it으로 접근한다.
리턴 값 | this로 접근 | it으로 접근 |
---|---|---|
수신 객체 자체 | apply | also |
Block의 마지막 줄 | run | let |
함수 | 용도 |
---|---|
apply | 객체의 초기화 |
also | 데이터 할당 전 유효성 검사 |
let | null check 후 실행 |
run | 명시적 수신객체를 암시적 수신객체로 이용할 때 |