data 클래스의 인스턴스를 구조 분해할 때는 data 클래스 생성자에 각 프로퍼티가 나열된 순서대로 값이 대입된다.

    Destructuring/Tuple.kt

    package destructuring
    import atomictest.eq
    
    data class Tuple(
      val i: Int,
      val d: Double,
      val s: String,
      val b: Boolean,
      val l: List<Int>
    )
    
    fun main() {
      val tuple = Tuple(
        1, 3.14, "Mouse", false, listOf())
      val (i, d, s, b, l) = tuple
      i eq 1
      d eq 3.14
      s eq "Mouse"
      b eq false
      l eq listOf()
        
      val (_, _, animal) = tuple // [1]
      animal eq "Mouse"
    }

    [1] 구조 분해 선언으로 선언할 식별자 중 일부가 필요하지 않은 경우, 이름 대신 밑줄(_)을 사용할 수 있고, 맨 뒤쪽의 이름들은 아예 생략할 수 있다. 여기서는 밑줄을 사용해 1과 3.14를 무시하고, "Mouse"animal에 대입되며, 목록 맨 뒤에 있는 두 변수를 생략했기 때문에 false와 빈 List도 무시된다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.