Что делает функция componentN()?



Функция componentN() возвращает значение переменной и позволяет обращаться к свойствам объекта класса по их порядковому номеру. Генерируется автоматически только для data классов.



Также функцию componentN() можно создать самому для класса, который не является data классом.



class Person(val firstName: String, val lastName: String, val age: Int) {

operator fun component1() = firstName

operator fun component2() = lastName

operator fun component3() = age

}



Теперь можно использовать мульти-декларации для класса Person:



val person = Person("John", "Doe", 30)

val (firstName, lastName, age) = person

println("$firstName $lastName is $age years old.")



В данном примере мы определили функции component1(), component2() и component3() как операторы с ключевым словом operator. Они возвращают значения свойств firstName, lastName и age соответственно. После этого мы можем использовать мульти-декларации для разбивки объекта Person на отдельные переменные.