apply, run, with, alse, let 이 있다.itLambda result📘 this와 it의 차이점
[this]
- 람다 함수의
Receiver객체를 참조 (T.() -> R)- 프로퍼티 접근 시 생략 가능
- 코드 블록 내에서 외부 변수 혼용 시, 키워드 생략으로 인해 무엇이 멤버고 외부 변수인지 혼란스러울 수 있음
[it]- 람다 함수의
Argument로 들어온 객체를 참조 ((T) -> R)this와 달리, 외부 변수와 명확하게 구분됨
nums?.let {
nums.length == 0
}
let의 주 용도라고 볼 수 있는 케이스if문 없이 간결하게 null 체크가 가능하다.null이 아닌 값들로만 코드 블럭을 실행시키고 싶을 때 사용한다.let을 사용해 null 체크하는 경우, IDE에서 non-null 타입으로 인식한다. (IntelliJ-based IDE 기준)school.classroom.students.let {
it.get(0).friend.age += 1
it.length == 1
it.get(0).age += 1
}
depth가 너무 깊은 경우, 별도 변수 선언 없이 let으로 단축할 수 있다.something().let { tmp ->
...
}
출처
[Kotlin] Scope function (let, run, with, apply, also) 정리
[Kotlin] 언제 뭘 써야 돼? 헷갈리는 스코프 함수 한 방 정리
Kotlin :: Scope 함수, 가독성 있게 쓰는 법