[코틀린기초] 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가 반환됨.