#19 Kotlin Koans Conventions/Invoke 해설
1 소개
Kotlin 공식 레퍼런스의 Kotlin Koans/Invoke의 해설 기사입니다.
Kotlin Koans를 통해 Kotlin을 배우는 사람들의 도움이 되길 바랍니다.
다만, 레퍼런스를 자력으로 읽는 힘을 기르고 싶은 분은,
곧이 기사를 보지 마십시오!
일단 각자 도전하고 나서 볼 수 있다고 생각합니다
2 Invoke 함수
Invoke 함수 은 함수 호출이 일반 호출보다 단순해진다는 특징을 가지며 ()만으로 참조 할 수 있습니다.
즉,
일반 함수 호출이라면 a.invoke()
a()
로 호출할 수 있습니다.
다만, 본문 쪽에도 주의 환기가 있습니다만,
너무 많이 사용하면 코드의 가독성이 저하되기 때문에 주의가 필요합니다.
3 Conventions/Invoke 해설
Kotlin Koans Conventions/Invoke 의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.
본문과 코드를 살펴보자.
Objects with invoke() method can be invoked as a function.
You can add invoke extension for any class, but it's better not to overuse it:
fun Int.invoke() { println(this) }
1() //huh?..
Implement the function Invokable. invoke () so it would count a number of invocations.
Invokeclass Invokable {
var numberOfInvocations: Int = 0
private set
operator fun invoke(): Invokable {
TODO()
}
}
fun invokeTwice(invokable: Invokable) = invokable()()
invoke() 함수를 구현하여 invoke() 함수가 호출된 횟수를 계산할 수 있습니다.
invoable()()
는 invokable()
에서 한 번 invoke() 함수를 호출하고 반환 값(Invokable 형식의 인스턴스)이 다시 ()
에서 invoke() 함수를 호출합니다.
invoke()는 호출될 때마다 호출된 횟수(numberOfInvocations)에 1을 더하고 Invokable 인스턴스를 반환하면 되므로
다음이 해답입니다.
Invokeclass Invokable {
var numberOfInvocations: Int = 0
private set
operator fun invoke(): Invokable {
numberOfInvocations ++
return this
}
}
fun invokeTwice(invokable: Invokable) = invokable()()
4 마지막으로
다음은 Kotlin Koans Collections/Introducion의 해설을합니다.
Reference
이 문제에 관하여(#19 Kotlin Koans Conventions/Invoke 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/G-o/items/3766f43bd171de5b32cd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Invoke 함수 은 함수 호출이 일반 호출보다 단순해진다는 특징을 가지며 ()만으로 참조 할 수 있습니다.
즉,
일반 함수 호출이라면
a.invoke()
a()
로 호출할 수 있습니다.다만, 본문 쪽에도 주의 환기가 있습니다만,
너무 많이 사용하면 코드의 가독성이 저하되기 때문에 주의가 필요합니다.
3 Conventions/Invoke 해설
Kotlin Koans Conventions/Invoke 의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.
본문과 코드를 살펴보자.
Objects with invoke() method can be invoked as a function.
You can add invoke extension for any class, but it's better not to overuse it:
fun Int.invoke() { println(this) }
1() //huh?..
Implement the function Invokable. invoke () so it would count a number of invocations.
Invokeclass Invokable {
var numberOfInvocations: Int = 0
private set
operator fun invoke(): Invokable {
TODO()
}
}
fun invokeTwice(invokable: Invokable) = invokable()()
invoke() 함수를 구현하여 invoke() 함수가 호출된 횟수를 계산할 수 있습니다.
invoable()()
는 invokable()
에서 한 번 invoke() 함수를 호출하고 반환 값(Invokable 형식의 인스턴스)이 다시 ()
에서 invoke() 함수를 호출합니다.
invoke()는 호출될 때마다 호출된 횟수(numberOfInvocations)에 1을 더하고 Invokable 인스턴스를 반환하면 되므로
다음이 해답입니다.
Invokeclass Invokable {
var numberOfInvocations: Int = 0
private set
operator fun invoke(): Invokable {
numberOfInvocations ++
return this
}
}
fun invokeTwice(invokable: Invokable) = invokable()()
4 마지막으로
다음은 Kotlin Koans Collections/Introducion의 해설을합니다.
Reference
이 문제에 관하여(#19 Kotlin Koans Conventions/Invoke 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/G-o/items/3766f43bd171de5b32cd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
fun Int.invoke() { println(this) }
1() //huh?..
class Invokable {
var numberOfInvocations: Int = 0
private set
operator fun invoke(): Invokable {
TODO()
}
}
fun invokeTwice(invokable: Invokable) = invokable()()
class Invokable {
var numberOfInvocations: Int = 0
private set
operator fun invoke(): Invokable {
numberOfInvocations ++
return this
}
}
fun invokeTwice(invokable: Invokable) = invokable()()
다음은 Kotlin Koans Collections/Introducion의 해설을합니다.
Reference
이 문제에 관하여(#19 Kotlin Koans Conventions/Invoke 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/G-o/items/3766f43bd171de5b32cd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)