Kotlin : Koans 예제 invoke operator 의 리턴타입에 관한 궁금증.

조회수 613회
class Invokable {
    var numberOfInvocations: Int = 0
        private set

    operator fun invoke(): Invokable {
        numberOfInvocations++
        return this
    }
}

fun invokeTwice(invokable: Invokable) = invokable()()

Kotlin 의 Koans 예제를 풀어보고 있습니다. invoke operator 를 구현하는 문제이고, 위 코드는 정답 내용입니다. ( https://play.kotlinlang.org/koans/Conventions/Invoke/Task.kt )

invoke operator 의 반환형이 왜 Invokable 로 정의된 것일까요?

  • 리턴값으로 자기 자신을 넘겨서 연속적인 호출(막줄의 invokable()() 처럼)을 하기 위해서요. doodoji 2021.2.16 17:27
  • @digda : 앗 그런것 같네요. 괄호 두 개 나온 게 이상하긴 했는데, 언뜻 첫번째 괄호는 인스턴스 생성으로 착각했었나 봅니다. invoke 의 반환형이 꼭 Invokable 이어야 하거나 하는 건 아닌거죠? nowp 2021.2.17 05:35
  • 그럴거에요. 클래스 인스턴스의 호출 연산자 오버로딩이라 그냥 리턴 타입이 클래스 네임이 되면 될거에요. doodoji 2021.2.17 17:42

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)