Component 解構
Kotlin這邊的解構跟C++的解構子完全不同。
這邊的解構是把物件拆成好幾個變數。
類別
語法
class 類別 {
operator fun component1() = 屬性
operator fun component2() = 屬性
operator fun component3() = 屬性
operator fun component4() = 屬性
.
.
.
}
物件拆成好幾個變數。
val (屬性1, 屬性2, 屬性3) = 物件
範例
1
2
3
4
5
class Pig(val name:String, val age:Int, val weight:Float) {
operator fun component1() = name
operator fun component2() = age
operator fun component3() = weight
}
測試
1
2
3
4
fun main() {
val (name, age, weight) = Pig("佩佩", 10, 20.5f)
println("name = $name, age = $age, weight = $weight")
}
name = 佩佩, age = 10, weight = 20.5
底線_
不想指派屬性值,可以用底線。
1
2
3
4
fun main() {
val (name, _ , weight) = Pig("佩佩", 10, 20.5f)
println("name = $name, weight = $weight")
}
name = 佩佩, weight = 20.5
集合
集合也有支援解構,把集合拆成好幾個變數。
1
2
3
4
fun main() {
val (name1, name2, name3) = listOf<String>("Mary", "Bill", "Eva")
println("name1 = $name1, name2 = $name2, name3 = $name3")
}
name1 = Mary, name2 = Bill, name3 = Eva
Data Class
Data Class自動就會寫Componet的語法,不用自己寫。