apply, with, let, also, run
객체 범위 내에서 코드 블록 실행하거나 조작 가능
수신 객체 + 수신 객체 지정 람다 로 이루어짐
한 객체를 이용해서 람다식을 구성하는 것으로 구성됨..!
apply
수신 객체 속성 변경하고, 객체 자체를 반환
val person = Person()
person.apply {
name = "John"
age = 30
}.doSomethingElse()
객체 초기화, 객체 설정 연속적 수행시 사용
with
수신 객체 속성 변경하지 않고 코드 블록 실행
해당 객체 내에서 작업 수행 시 사용
val person = Person()
with(person) {
println("Name: $name")
println("Age: $age")
}
let
null이 아닌 수신 객체 받아 코드 블록 내에서 작업 수행 하고 결과 반환
주로 null 검사, 안전한 호출에 사용
val name: String? = "Alice"
name?.let {
println("Name is $it")
}
also
수신 객체를 그대로 반환하면서 코드 블록 내에서 작업 수행
객체 조장하면서 작업 결과를 원본 객체로 유지하고 싶을 때 사용
val person = Person()
person.also {
it.name = "Bob"
}.doSomethingElse()
run
수신 객체 받아 코드 블록 내에서 작업 수행하고, 결과 반환
수신 객체에서 계산 및 초기화 수행하며 결과 반환하고자 할 때 사용
val result = "Hello, Kotlin".run {
length
}