Ответ
В Android работал с различными scope-функциями Kotlin, такими как let, run, with, apply и also.
let– для выполнения кода с объектом, возвращает результат лямбды.
user?.let { println(it.name) }
run– какlet, но с доступом к свойствам черезthis.
val length = "text".run { length }
with– аналогичноrun, но не extension-функция.
with(user) { println(name) }
apply– возвращает сам объект (this), удобен для инициализации.
val user = User().apply { name = "Alex" }
also– какapply, но принимает объект какit.
user.also { println("User: ${it.name}") }
Выбор зависит от контекста: let для null-проверок, apply/also для модификации, run/with для вычислений.