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

Деструктуризация data class в Kotlin

Деструктуризация позволяет присвоить поля data class нескольким переменным сразу. Слева перечисляют имена в скобках, справа - объект; порядок совпадает с порядком свойств в заголовке:

data class User(val name: String, val age: Int) fun main() { val user = User("Ann", 25) val (n, a) = user println(n) println(a) }

Тот же приём работает в цикле for, если обходят список однотипных записей - на каждой итерации поля попадают в локальные имена:

data class Point(val x: Int, val y: Int) fun main() { val points = listOf(Point(1, 2), Point(3, 4)) for ((x, y) in points) { println("$x:$y") } }

Компилятор генерирует функции component1, component2 и далее по числу свойств в заголовке. Явно вызывать их редко нужно - запись с круглыми скобками читается короче:

data class RGB(val r: Int, val g: Int, val b: Int) fun main() { val color = RGB(10, 20, 30) val (red, green, blue) = color println(red + green + blue) }

Сделайте data class Size с полями width и height. Дан объект:

val box = Size(800, 600)

Получите width и height в двух переменных через деструктуризацию и выведите на экран их произведение.

Сделайте data class Row с полями key и value. Дан список:

val rows = listOf(Row("a", 1), Row("b", 2))

Выведите на экран каждый key в отдельной строке в цикле for с деструктуризацией.

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