На этом шаге мы рассмотрим назначение и применение этой функции.
Функция also похожа на функцию let. Как и let, also передает объект-приемник как аргумент в лямбду. Но есть одно большое различие между let и also: вторая возвращает объект-приемник, а не результат лямбды.
Это делает also особенно полезной для добавления различных побочных эффектов. Пример ниже дважды вызывает also для выполнения двух разных операций: первая выводит имя файла, а вторая записывает содержимое файла в переменную fileContents.
var fileContents: List<String> File("file.txt") .also { print(it.name) }.also { fileContents = it.readLines() }
Так как also возвращает объект-приемник, а не результат лямбды, с ее помощью можно вызвать длинную цепочку функций относительно оригинального объекта-приемника.
На следующем шаге мы рассмотрим функцию takeIf.