[kotlin] scope

참조: https://proandroiddev.com/kotlin-scope-and-extension-functions-b35925ec96b7

계속 이해가 안됐는데, 저 글을 읽으니 이해가 간다.

let

nullable. 이건 다들 잘 알고 있을 듯

nullable?.let { Log.i("###", "not null") }

apply

생성한 object의 property를 바꿀 때

val textView = TextView(this)
  .apply { text = "hello" }

also

생성한 object와 무관한 코드 호출

val textView = TextView(this)
  .also { Log.i("###", "text view created") }

also에는 ?.let{}의 else 에 해당하는 부분을 사용할 수도 있다.

var name: String? = null
name?.let { Log.i("###", "not null") } ?: also { Log.e("###", "null") }

with

해당 object의 여러 작업 실행

with(service) { connect(); sendData(data); disconnect() }

run

위의 것들로 다 커버가 되니 사용하지 말라고 한다.