Назад к вопросам
Junior — Middle
69
Какое различие между методами run, let, also и apply в Kotlin или аналогичных языках?
Ответ от нейросети
sobes.tech AI
В Kotlin методы run, let, also и apply — это функции расширения с разным поведением и назначением:
-
let: принимает объект как параметр (it), возвращает результат лямбды. Часто используется для безопасной работы с nullable, например:val result = obj?.let { it.doSomething() } -
run: похож наlet, но лямбда вызывается с объектом какthis, возвращает результат лямбды. Удобен для вычислений и инициализации:val length = str.run { length } -
also: принимает объект как параметр (it), возвращает сам объект. Используется для дополнительных операций, например логирования, без изменения объекта:val obj = Obj().also { println(it) } -
apply: лямбда сthis, возвращает объект. Часто применяется для конфигурации объекта:val paint = Paint().apply { color = Color.RED strokeWidth = 10f }
Кратко:
letиalsoработают сit,runиapply— сthis.letиrunвозвращают результат лямбды.alsoиapplyвозвращают исходный объект.
Это позволяет выбирать подходящий метод в зависимости от задачи: трансформация, конфигурация, побочные эффекты и т.п.