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的語法,不用自己寫。

results matching ""

    No results matching ""