解构声明
所谓的解构声明就是将一个对象解构(destructure)为多个变量,也就是意味着一个解构声明会一次性创建多个变量.简单的来说,一个解构声明有两个动作:
- 声明了多个变量
- 将对象的属性值赋值给相应的变量
比如,有个数据类Person,其有name和age两个属性
data class Person(var name: String, var age: Int) {
}
当我们对Person的实例使用解构声明时,可以这样做:
var person: Person = Person("Jone", 20)
var (name, age) = person
println("name: $name, age: $age")// 打印:name: Jone, age: 20
其中,”var (name, age) = person”就是解构声明,其实际意义是创建了两个变量name和age,然后将person的属性值”Jone”和20分别赋值给name和age。这是一个怎么样的一个过程呢?
在Kotlin-数据类中,我们已经了解到编译器会根据主构造器中声明的全部属性, 自动推断产生componentN() 函数群, 这些函数与类的属性对应, 函数名中的数字1到N,与属性的声明顺序一致。
解构声明在编译时将被分解为以下代码:
val name = person.component1()
val age = person.compo