#9 Kotlin Koans Introduction/Extension functions 해설

1 소개



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

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

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

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

2 확장 함수



확장 함수는 상속을 사용하지 않고 특정 클래스에 추가한 함수입니다.

확장 함수는 원래 클래스에 정의된 함수와 마찬가지로 참조할 수 있습니다.

다음은 확장 함수의 정의와 참조입니다.
拡張関数の定義
fun MutableList<Int>.swap(index1: Int, index2: Int) {
    val tmp = this[index1] 
    this[index1] = this[index2]
    this[index2] = tmp
}

拡張関数の参照
val list = mutableListOf(1, 2, 3)
list.swap(0, 2) 


위의 MutableList<Int>를 리시버 형식이라고 부르고이 클래스에 함수를 추가합니다 (이 경우 swap()関数를 추가합니다.)

확장 함수의 this는 수신기 객체를 의미합니다.

그래서, this는 swap() 함수를 호출하고 있는 변수 list(MutableList 객체가 대입되고 있다.) 자신이라는 것이 됩니다.

3 Introduction/Extension functions 해설



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

오른쪽의 본문을 보자.

Read about extension functions . Then implement extension functions Int.r() and Pair.r() and make them convert Int and Pair to RationalNumber.

extension functions에 관하여 읽으십시오. 확장 함수 Int.r()과 Pair.r()을 정의하고 Int와 Pair를 RationalNumber로 변환하십시오.

왼쪽의 구현하는 코드입니다.
fun Int.r(): RationalNumber = TODO()
fun Pair<Int, Int>.r(): RationalNumber = TODO()

data class RationalNumber(val numerator: Int, val denominator: Int)

즉, Int형의 오브젝트와 Pair형의 오브젝트가 각각 확장 함수 r()를 호출했을 때에, RationalNumber형으로 변환하면 됩니다.

Int형의 객체가 확장 함수 r()를 호출하는 것을 생각해 봅시다.

Int 형의 오브젝트는 임의의 정수를 의미하기 때문에, 이것을 RationalNumber 형으로 변환하려면 TODO ()의 부분을
RationalNumber(this,1)

라고 정의하면 됩니다.

(※)2번째의 인수가 1인 것은, RationalNumber 클래스가 유리수를 생성하는 클래스를 의도하고 있어, 인수명도 denominator(분모)라고 있기 때문이라고 추측하고 있습니다.

Pair 유형의 객체가 확장 함수 r()을 호출한다는 것을 생각해 봅시다.

Pair 클래스에는 first와 second라는 속성이 있습니다.
각 유형은 Pair의 오른쪽 옆에 있는 <,> 안에 표시됩니다. 이번 경우 first도 second도 Int형이라고 합니다.

그러므로
RationalNumber(first,second)

라고 정의하면 됩니다.

4 마지막으로



다음 번은 Kotlin Koans Introducion/Object expressions의 해설을합니다.

좋은 웹페이지 즐겨찾기