Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpSfAl 14 of 299 menu
◀ ▶

Побочное действие в Kotlin

Функция also передает объект в лямбду как it и после блока возвращает тот же экземпляр. Последнее выражение внутри лямбды на результат вызова не влияет - наружу снова идет исходный объект:

data class Ticket(val code: String) fun main() { val ticket = Ticket("T7").also { println("saved ${it.code}") } println(ticket.code) }

Такой вызов удобен для журнала или проверки, когда менять поля объекта не нужно, а дальше работают с тем же значением:

data class Ticket(val code: String) fun main() { val list = mutableListOf<Ticket>() val ticket = Ticket("K2").also { list.add(it) } println(list.size) println(ticket.code) }

Несколько побочных шагов можно поставить в цепочку, если каждый звено возвращает тот же тип:

data class Ticket(val code: String) fun main() { val ticket = Ticket("P1") .also { println("step1 ${it.code}") } .also { println("step2 ${it.code}") } println(ticket.code) }

Создайте Order с номером "44". Выведите строку "log 44" в момент создания, не меняя поля заказа, и затем напечатайте номер из той же переменной.

Есть изменяемый список строк. Добавьте в него "alpha" через scope-вызов у литерала строки так, чтобы в переменной осталась та же строка "alpha", а размер списка стал 1.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить