data class Student(var name: String, var age: Int)
val student = Student("John", 12)
val (name, age) = student
println("name is $name , $age years old")
- 支持解构声明的对象的类必须是数据类(使用data关键字修饰的类),因为只有data class才会生成对应的component()方法
- 解构声明实际上就是将对象中所有属性,解构成一组属性变量,每个属性值的获得最后都编译成通过调用与之对应的component()方法,每个component()方法对应着类中每个属性的值,然后在作用域定义各自属性局部变量,这些局部变量存储着各自对应属性的值,所以看起来变量可以单独使用,实际上使用的是局部变量。
- 解构声明中解构对象的属性是可选的,也就是并不是要求该对象中所有属性都需要解构,也就是可选择需要解构的属性。可以使用下划线"_"省略不需要解构的属性也可以不写改属性直接忽略。