Что такое мульти-декларации (destructuring declarations)?



Мульти-декларации (destructuring declarations или деструктуризирующее присваивание) — это способ извлечения значений из объекта и присвоения их сразу нескольким переменным. В Kotlin этот механизм поддерживается с помощью оператора распаковки (destructuring operator) — componentN(), где N — номер компонента.



При создании data класса Kotlin автоматически создает функции componentN() для каждого свойства класса, где N — номер позиции переменной в конструкторе. Функции componentN() возвращают значения свойств в порядке их объявления в конструкторе. Это позволяет использовать мульти-декларации для распаковки значений свойств и присваивания их отдельным переменным.



Например, если у нас есть data класс Person с двумя свойствами name и age, мы можем использовать мульти-декларации, чтобы извлечь эти свойства и присвоить их двум переменным:



data class Person(val name: String, val age: Int)



val person = Person("Alice", 29)

val (name, age) = person



println(name) // Alice

println(age) // 29



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



val people = listOf(Person("Alice", 30), Person("Bob", 40))

for ((name, age) in people) {

println("$name is $age years old")

}



// Alice is 30 years old

// Bob is 40 years old



Мульти-декларации также могут быть использованы с массивами и другими коллекциями:



val list = listOf("apple", "banana", "orange")

val (first, second, third) = list



println(first) // apple

println(second) // banana

println(third) // orange