分解宣言とは
    分解宣言(Destructuring Declaration)とは、
    あるインスタンスを利用して、複数の変数を同時に宣言することです。
    あるインスタンス(のプロパティ)を、いっぺんに複数の変数に分解するようなイメージになります。
fun main(args: Array) {
    val student = Student("suzuki", 80.0)
    // studentをnameとscoreに分解する
    val (name, score) = student
    println(name)
    println(score)
}
data class Student(val name: String, var score: Double)  suzuki
80.0 
    これは、Studentクラスに暗黙的に自動実装される
    componentNというメンバーを利用した機能です。
    分解宣言は実際には次の処理を行っていることになります。
fun main(args: Array) {
    val student = Student("suzuki", 80.0)
    // 分解線gんの実体は次の処理になる
    val name = student.component1() // nameに対応する、暗黙的に実装されるcomponentN()
    val score = student.component2() // scoreに対応する、暗黙的に実装されるcomponentN()
    
    println(name)
    println(score)
}
data class Student(val name: String, var score: Double)  suzuki
80.0 分解実装はさまざまな場面で利用できますが、典型的な使い方はfor文で利用する場合です。
import kotlin.math.sqrt
fun main(args: Array) {
    val list = listOf(
            Point3D(1.0, 2.0, 3.0),
            Point3D(4.0, 5.0, 6.0),
            Point3D(7.0, 8.0, 9.0))
    for ((x, y, z) in list) {
        val distance = sqrt(x * x + y * y + z * z)
        println("Distance: ${distance}")
    }
}
data class Point3D(var x: Double, var y: Double, var z: Double)   Distance: 3.7416573867739413
Distance: 8.774964387392123
Distance: 13.92838827718412