[코틀린기초] 12. 코틀린 표준함수 apply()
apply 함수는 also 함수와 마찬가지로 호출하는 객체 T를 이어지는 block으로 전달하고, 객체 자체인 this를 반환한다.
public inline fun <T> T.apply(block: T.() -> Unit) : T {block(); return this}
위의 T.()와 같은 표현에서 람다식이 확장 함수로서 처리한다.
고로 it을 사용하지않고 this를 사용함.
fun main(){
data class Person(var name: String, var skills : String)
var person = Person("kildong", "Kotlin")
//여기서 this는 person 객체를 가리킴
person.apply{this.skills = "Swift"}
}
also는 it을 생략할 수 없지만 apply는 생략이 가능하다
안드로이드 사용 예
val param = LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT).apply {
gravity = Gravity.CENTER_HORIZONTAL
weight = 1f
topMargin = 100
bottomMargin = 100
}
디렉터리 생성시에 활용
File(path).apply(mkdirs); //this가 반환됨.