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

Вызов с готовым объектом в Kotlin

Функция with - обычная функция, а не расширение. Готовый объект передают первым аргументом, в лямбде он становится this, а результат блока возвращает сам вызов with:

data class Crate(val code: String, val units: Int) fun main() { val box = Crate("B12", 8) val line = with(box) { "$code holds $units" } println(line) }

Запись удобна, когда переменная с объектом уже есть и длинное имя мешает читать цепочку обращений к полям:

data class Crate(val code: String, val units: Int) fun main() { val box = Crate("B12", 8) val total = with(box) { units * 3 } println(total) }

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

data class Crate(val code: String, val units: Int) fun main() { val box = Crate("X1", 2) val ok = with(box) { code.length > 1 && units > 0 } println(ok) }

Есть класс Ledger с полями year и amount. Создайте экземпляр и одним scope-вызовом соберите строку "2024: 900" для своих чисел. Выведите ее.

Дан объект Segment с началом и концом отрезка. Верните длину как разность конца и начала, не дублируя имя переменной с объектом в каждой строке блока.

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