#36 Kotlin Koans Builders/Function literals with reciever 해설
1 소개
Kotlin 공식 레퍼런스의 Kotlin Koans Builders/Function literals with reciever의 해설 기사입니다.
Kotlin Koans를 통해 Kotlin을 배우는 사람들의 도움이 되길 바랍니다.
다만, 레퍼런스를 자력으로 읽는 힘을 기르고 싶은 분은,
곧이 기사를 보지 마십시오!
한 번 각자로 도전하고 나서, 눈에 띄게 된다고 생각합니다
2 수신기
먼저 실제 예를 살펴 보겠습니다.
Exampleval sum: Int.(Int) -> Int = { other -> plus(other) }
위의 예에서 1번 왼쪽의 Int
를 리시버라고 합니다.
(왼쪽에서 두 번째 Int
는 인수 형식을, 왼쪽에서 세 번째 Int
는 반환 형식을 나타냅니다.)
즉,
리시버는 함수 유형 호출의 원래 인스턴스 유형을 지정합니다.
3 Builders/Function literals with reciever 설명
Kotlin Koans Builders/Function literals with receiver의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.
본문과 코드를 살펴보자.
Read about function literals with receiver .
You can declare isEven and isOdd as values, that can be called as extension functions. Complete the declarations below.
Function_literals_with_recieverfun task(): List<Boolean> {
val isEven: Int.() -> Boolean = { TODO() }
val isOdd: Int.() -> Boolean = { TODO() }
return listOf(42.isOdd(), 239.isOdd(), 294823098.isEven())
}
리시버에서 알 수 있듯이 변수 isEven
및 isOdd
는 Int 유형의 인스턴스에서 참조된다는 것을 알 수 있습니다.
(실제로, 다음의 코드에서는 42
/239
/294823098
라고 하는 Int형의 인스턴스가 호출하고 있는군요.)
isEven은 호출 원래 인스턴스가 짝수이면 true를 반환하고 isOdd는 호출자 인스턴스가 홀수이면 true를 반환하도록 구현합니다.
따라서 다음과 같은 구현이 됩니다.
Function_literals_with_receiverfun task(): List<Boolean> {
val isEven: Int.() -> Boolean = { this % 2 == 0 }
val isOdd: Int.() -> Boolean = { this % 2 != 0 }
return listOf(42.isOdd(), 239.isOdd(), 294823098.isEven())
}
(this % 2 != 0
는 this % 2 == 1
에서도 괜찮습니다.)
4 마지막으로
다음은 Kotlin Koans Builders/String and map builders의 해설을 하겠습니다
Reference
이 문제에 관하여(#36 Kotlin Koans Builders/Function literals with reciever 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/G-o/items/74551b0d2a8f3a548f26
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
먼저 실제 예를 살펴 보겠습니다.
Example
val sum: Int.(Int) -> Int = { other -> plus(other) }
위의 예에서 1번 왼쪽의
Int
를 리시버라고 합니다.(왼쪽에서 두 번째
Int
는 인수 형식을, 왼쪽에서 세 번째 Int
는 반환 형식을 나타냅니다.)즉,
리시버는 함수 유형 호출의 원래 인스턴스 유형을 지정합니다.
3 Builders/Function literals with reciever 설명
Kotlin Koans Builders/Function literals with receiver의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.
본문과 코드를 살펴보자.
Read about function literals with receiver .
You can declare isEven and isOdd as values, that can be called as extension functions. Complete the declarations below.
Function_literals_with_recieverfun task(): List<Boolean> {
val isEven: Int.() -> Boolean = { TODO() }
val isOdd: Int.() -> Boolean = { TODO() }
return listOf(42.isOdd(), 239.isOdd(), 294823098.isEven())
}
리시버에서 알 수 있듯이 변수 isEven
및 isOdd
는 Int 유형의 인스턴스에서 참조된다는 것을 알 수 있습니다.
(실제로, 다음의 코드에서는 42
/239
/294823098
라고 하는 Int형의 인스턴스가 호출하고 있는군요.)
isEven은 호출 원래 인스턴스가 짝수이면 true를 반환하고 isOdd는 호출자 인스턴스가 홀수이면 true를 반환하도록 구현합니다.
따라서 다음과 같은 구현이 됩니다.
Function_literals_with_receiverfun task(): List<Boolean> {
val isEven: Int.() -> Boolean = { this % 2 == 0 }
val isOdd: Int.() -> Boolean = { this % 2 != 0 }
return listOf(42.isOdd(), 239.isOdd(), 294823098.isEven())
}
(this % 2 != 0
는 this % 2 == 1
에서도 괜찮습니다.)
4 마지막으로
다음은 Kotlin Koans Builders/String and map builders의 해설을 하겠습니다
Reference
이 문제에 관하여(#36 Kotlin Koans Builders/Function literals with reciever 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/G-o/items/74551b0d2a8f3a548f26
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
fun task(): List<Boolean> {
val isEven: Int.() -> Boolean = { TODO() }
val isOdd: Int.() -> Boolean = { TODO() }
return listOf(42.isOdd(), 239.isOdd(), 294823098.isEven())
}
fun task(): List<Boolean> {
val isEven: Int.() -> Boolean = { this % 2 == 0 }
val isOdd: Int.() -> Boolean = { this % 2 != 0 }
return listOf(42.isOdd(), 239.isOdd(), 294823098.isEven())
}
다음은 Kotlin Koans Builders/String and map builders의 해설을 하겠습니다
Reference
이 문제에 관하여(#36 Kotlin Koans Builders/Function literals with reciever 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/G-o/items/74551b0d2a8f3a548f26텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)