호출하려는 함수가 고차함수이고 마지막 전달인자가 람다함수이면 소괄호를 생략해도 된다.
some(10, {println("asdf")})
some(10) {println("asdf")}
위 두 함수는 같은 의미이다.
public inline fun <T> T.apply(block:T.() -> Unit): T
apply
함수는 수신객체의 프로퍼티를 변환 후 해당 수신객체 자체를 반환하는데 주로 사용한다.
val name = TextView(this).apply{
typeface = Typeface.DEFAULT_BOLD
text = "Hello"
}
TextView
의 typeface
와 text
를 세팅한다.
코드입력 시 this
는 생략이 가능하다.
public inline fun <T> T.also(block: (T) -> Unit): T
apply
와 다르게 파라미터로 T
를 지정하고, 따라서 this
가 아닌 it
를 사용한다.
also
함수는 프로퍼티 세팅 후 추가적인 작업까지 진행할 때 주로 사용한다.
val image = ImageView(this).also{
it.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_launcher_foreground))
}
Apply
와 같지만 마지막 줄을 반환값으로 사용한다.
주로 수신 객체의 특정 실행 결과값을 반환해야 할때 사용된다.
Also
와 같지만 마지막 줄을 반환값으로 사용한다.
실제 사용할 때는 null
체크용으로 연관되어 사용한다.
var name: String? = null
val printName = name?.let {
println(name)
}
name
이 null
일 경우 let
구문은 수행되지 않는다.