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 |
Сам объект | Настройка свойств |