Sobes.tech
Middle

Фарқи байни функсияҳои васеъкунӣ let, run, also ва apply дар Kotlin чист?

sobes.tech AI

Ҷавоб аз AI

let: Объект вызывается в замыкание и возвращает результат этого замыкания. Позволяет использовать объект как аргумент в лямбда-выражении (it). Подходит для работы с nullable объектами.

// Пример использования let
val nullableString: String? = "Hello"
val length = nullableString?.let {
    // it - не-null String
    it.length
}

run: Выполняет блок кода на объекте и возвращает результат блока. Внутри блока объект доступен как this. Полезно для инициализации и вызова методов.

// Пример использования run
val result = buildString {
    // this - StringBuilder
    append("Start\n")
    append("Middle\n")
}.run {
    // this - String
    uppercase()
}

also: Вызывает замыкание на объекте и возвращает сам объект. Позволяет выполнять дополнительные действия (например, логирование или конфигурация) над объектом, не изменяя его.

// Пример использования also
val list = mutableListOf("a", "b", "c").also {
    // it - MutableList
    println("Список создан: $it")
}

apply: Вызывает замыкание на объекте и возвращает сам объект. Внутри блока объект доступен как this. Удобно для настройки свойств объекта.

// Пример использования apply
val textView = TextView(context).apply {
    // this - TextView
    text = "Привет, мир!"
    textSize = 16f
    setTextColor(Color.BLACK)
}

Основные различия:

Функция Как доступен объект Что возвращает Типичное применение
let it Результат лямбда-выражения Nullable-объекты, трансформация
run this Результат лямбда-выражения Инициализация и вызов методов
also it Сам объект Дополнительные действия (побочные эффекты)
apply this Сам объект Настройка свойств