#18 Kotlin Koans Conventions/Destructuring declarations 해설

1 소개



Kotlin 공식 레퍼런스의 Kotlin Koans/Destructuring declarations의 해설 기사입니다.

Kotlin Koans를 통해 Kotlin을 배우는 사람들의 도움이 되길 바랍니다.

다만, 레퍼런스를 자력으로 읽는 힘을 기르고 싶은 분은,
곧이 기사를 보지 마십시오!

일단 각자 도전하고 나서 볼 수 있다고 생각합니다

2 Destructuring Declarations



Destructuring Declarations

Destructuring Declarations는 여러 변수를 동시에 선언할 수 있는 메커니즘입니다.

아래에서는 nameage 라는 두 개의 변수가 동시에 선언되어 있습니다.
val (name, age) = person

각 요소는 별도로 사용할 수 있습니다.
println(name)
println(age)

아래와 같이, componetN() 함수를 이용해 참조하는 것도 가능합니다.
val name = person.component1()
val age = person.component2()
componetN()N 의 부분은 선언시의 순서와 일치합니다.
componetN()data 클래스 에서 자동으로 선언되는 함수입니다.

따라서 data 클래스에서는 Destructuring declarations를 사용할 수 있습니다.

3 Conventions/Destructuring declarations 해설



Kotlin Koans Conventions/Destructuring declarations 의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.

본문과 코드를 살펴보자.

Read about destructuring declarations and make the following code compile by adding one word.

Destructuring_declarations
/* TODO */class MyDate(val year: Int, val month: Int, val dayOfMonth: Int)

fun isLeapDay(date: MyDate): Boolean {

    val (year, month, dayOfMonth) = date

    // 29 February of a leap year
    return year % 4 == 0 && month == 2 && dayOfMonth == 29
}
val (year, month, dayOfMonth) = date 의 부분에서 Destructuring declarations를 이용하려고 하고 있습니다.

단, 이대로는 이용할 수 없습니다.
date 는 MyDate 형의 인스턴스입니다만, MyDate 클래스가 data 클래스가 아니기 때문입니다.

따라서, MyDate 클래스를 data 클래스로 하면 좋기 때문에 이하가 해답이 됩니다.

Destructuring_declarations
data class MyDate(val year: Int, val month: Int, val dayOfMonth: Int)

fun isLeapDay(date: MyDate): Boolean {

    val (year, month, dayOfMonth) = date

    // 29 February of a leap year
    return year % 4 == 0 && month == 2 && dayOfMonth == 29
}

4 마지막으로



다음은 Kotlin Koans Conventions/Invoke의 해설을합니다.

좋은 웹페이지 즐겨찾기