6-1-1 apply also let run

StrayCat·2022년 10월 4일
0

고차함수 호출

호출하려는 함수가 고차함수이고 마지막 전달인자가 람다함수이면 소괄호를 생략해도 된다.

some(10, {println("asdf")}) 
some(10) {println("asdf")}

위 두 함수는 같은 의미이다.

Apply

public inline fun <T> T.apply(block:T.() -> Unit): T

apply함수는 수신객체의 프로퍼티를 변환 후 해당 수신객체 자체를 반환하는데 주로 사용한다.

val name = TextView(this).apply{
	typeface = Typeface.DEFAULT_BOLD
	text = "Hello"
}

TextViewtypefacetext를 세팅한다.
코드입력 시 this는 생략이 가능하다.

Also

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))
}

Run

Apply와 같지만 마지막 줄을 반환값으로 사용한다.

주로 수신 객체의 특정 실행 결과값을 반환해야 할때 사용된다.

Let

Also와 같지만 마지막 줄을 반환값으로 사용한다.

실제 사용할 때는 null 체크용으로 연관되어 사용한다.

var name: String? = null
val printName = name?.let {
    println(name)
}

namenull일 경우 let구문은 수행되지 않는다.

0개의 댓글