# 1. 什么是解构语法
要了解所谓的解构语法,这里首先来看一个案例:
~~~
fun main() {
var list = listOf(2, 1, 3)
var (a, b, c) = list
println("a=${a}, b=${b}, c=${c}")
}
~~~
结果:
```
a=2, b=1, c=3
```
其实也就是说可以定义几个变量,然后将其值一一放置在对应的变量空间中。
## 2. 自定义解构语法
有些时候我们也希望自己定义的类可以支持解构语法操作。这里就需要进行解构声明。在数据类中支持解构语法,比如下面的案例:
~~~
data class KotlinDemo(var name: String, var age: Int, var man: Boolean){
}
fun main() {
var (name, age, sex) = KotlinDemo("张三", 23, true)
println("name=$name, age=$age, sex=${sex.run { if(this) "男" else "女" }}")
}
~~~
结果:
```
name=张三, age=23, sex=男
```
也就是说,其实数据类默认是支持解构语法的。所以我们可以看下`show kotlin ByteCode`来查看最终生成的代码:
~~~
KotlinDemo var3 = new KotlinDemo("张三", 23, true);
String name = var3.component1();
int age = var3.component2();
boolean sex = var3.component3();
~~~
也就是我们如果希望在自定义类中也有这个功能,只需要定义`component1`、`component2`和`component3`这些类似的函数即可。比如:
~~~
class KotlinDemo(var name: String, var age: Int, var man: Boolean){
operator fun component1() = name
operator fun component2() = age
operator fun component3() = man
}
~~~
调用和结果和上面的案例保持一致,这里就不再给出。
注意到一点就是这里我们使用了`operator`这个关键字,也就是运算符重载,这个内容将在下个小节中进行学习。
- Kotlin语言基础
- Kotlin的简介
- Kotlin的变量和常见数据类型
- Kotlin的区间
- Kotlin的位运算
- Kotlin的容器
- Kotlin类型检查
- Kotlin的空值处理
- Kotlin的函数
- Kotlin的类
- Kotlin的委托
- Kotlin的延迟加载
- Kotlin的异常
- Kotlin的Lambda表达式
- Kotlin的高阶函数
- Kotlin的标准库中的高阶函数
- Kotlin的泛型
- Kotlin的表达式
- Kotlin的解构
- Kotlin的运算符重载
- Kotlin语言中级
- Kotlin的扩展函数
- Kotlin的扩展属性
- Kotlin的infix关键字
- Kotlin的DSL
- Kotlin的一些注解(和Java互调用)
- Kotlin的lateinit和by lazy
- Kotlin的反射
- Kotlin的匿名接口
- 安卓中的Kotlin
- 数据库操作Room