В чем разница между let и also

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

Ответ

let и also — оба являются scope-функциями в Kotlin, но имеют разные применения:

let:

  • Принимает объект как it (или можно переименовать)
  • Возвращает результат лямбды
  • Часто используется для null-check (?.let { }) или преобразования данных
val length = nullableString?.let { 
    it.length 
} ?: 0

also:

  • Принимает объект как this (неявно)
  • Возвращает сам объект (this)
  • Используется для side-эффектов (логирование, модификация)
val user = User().also {
    println("Created user: $it")
    it.name = "Alice" // доступно как this.name
}

Ключевое отличие: let трансформирует значение, also выполняет действия с объектом и возвращает его.