Sobes.tech
Назад к вопросам
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 возвращают исходный объект.

Это позволяет выбирать подходящий метод в зависимости от задачи: трансформация, конфигурация, побочные эффекты и т.п.