# 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