Ответ
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 выполняет действия с объектом и возвращает его.