apply 블록
오브젝트에 대해 호출하는 apply 블록은 주어진 코드블록을 수행한 다음, 전체 반환값으로 원래 오브젝트를 그대로 돌려줍니다. 코드블록 안에서는 객체에 접근할 때 this로 참조할 수 있습니다. 오브젝트를 초기화할 때 편리하게 쓸 수 있습니다.
data class Person(var name: String, var age: Int, var about: String) {
constructor() : this("", 0, "")
}
fun main() {
//sampleStart
val jake = Person() // 1
val stringDescription = jake.apply { // 2
name = "Jake" // 3
age = 30
about = "안드로이드 개발자"
}.toString() // 4
//sampleEnd
println(stringDescription)
}
Person()인스턴스를 기본 속성값으로 만들었습니다.- 만든 인스턴스에 대해 코드블록을 실행합니다.
apply안에서는,jake.name = "Jake"로 쓴 것과 동일합니다.- 전체 반환값은 인스턴스 자체가 됩니다. 그래서, 곧바로 이어서 다른 메서드(
.toString())를 호출했습니다.