[코틀린기초] 14. 코틀린 표준함수 with()

인자로 받는 객체를 이어지는 block의 receiver로 전달하며 결과값을 반환

run함수와 기능이 거의 동일한데, run의 경우 리시버가 없지만 with에서는 receiver로 전달한 객체를 처리

단 run과 달리 세이프 콜은 지원하지 않아 let과 같이 사용한다.

아무런 반환이 없으면 Unit이 반환된다.

public inline fun <T,R> with(receiver: T, block:T.() -> R) : R = receiver.block()
supportActionBar?.let{
  with(it){
    setDisplayHomeAsUpEnabled(true)
    setHomeAsUpIndicator(R.drawable.ic_clear_white)
  }
}

//위 코드는 run을 사용한 것과 같다.

supportActionBar?.run{
  setDisplayHomeAsUpEnabled(true)
  setHomeAsUpIndicator(R.drawable.ic_clear_white)
}