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

Вычисление на объекте в Kotlin

Функция run - scope-функция с получателем this внутри лямбды. Поля и методы объекта вызывают без имени, а значение последнего выражения блока становится результатом всего вызова:

class Parcel(val weight: Int, val fragile: Boolean) fun main() { val fee = Parcel(3, true).run { var sum = weight * 10 if (fragile) sum += 50 sum } println(fee) }

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

class Parcel(val weight: Int, val fragile: Boolean) fun main() { val note = Parcel(1, false).run { "weight=$weight fragile=$fragile" } println(note) }

Если блок не возвращает полезное значение, run все равно отдает Unit. Для вычисления с результатом последняя строка лямбды должна быть выражением, а не пустой командой:

class Parcel(val weight: Int, val fragile: Boolean) fun main() { val doubled = Parcel(4, false).run { weight * 2 } println(doubled) }

Сделайте класс Room с шириной и длиной в метрах. Создайте комнату 3 на 5 и через scope-вызов получите площадь. Выведите число.

У класса Badge есть код уровня и флаг vip. Сформируйте строку вида "level=2 vip=true" для подходящих значений и выведите ее одним выражением после создания объекта.

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