Какие знаешь функции области видимости

«Какие знаешь функции области видимости» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Kotlin есть несколько функций области видимости, которые помогают работать с объектами в определенном контексте:

  1. let – выполняет блок кода для объекта и возвращает результат блока. Полезно для null-проверок:
val length = nullableString?.let { it.length } ?: 0
  1. run – аналогичен let, но использует this вместо it. Может работать и без контекстного объекта:
val result = "Hello".run { length + substring(1).length }
  1. with – похож на run, но не является функцией-расширением:
with(view) { 
    visibility = View.GONE
    alpha = 0f
}
  1. apply – возвращает сам объект после выполнения блока. Идеален для инициализации:
val button = Button(context).apply {
    text = "Click me"
    setOnClickListener { /* ... */ }
}
  1. also – похож на apply, но использует it вместо this. Полезен для side-эффектов:
val list = mutableListOf(1, 2).also { it.add(3) }

Выбор зависит от контекста и того, нужен ли результат блока или сам объект.