"Kotlin invoke()"의 두 판 사이의 차이

8번째 줄: 8번째 줄:
     operator fun invoke(): Invokable {
     operator fun invoke(): Invokable {
         numberOfInvocations++
         numberOfInvocations++
        println("numberOfInvocations=${numberOfInvocations}");
         return this
         return this
     }
     }
}
}
fun invokeTwice(invokable: Invokable) = invokable()()
fun invokeTwice(invokable: Invokable) = invokable()()
fun main(args: Array<String>) {
    invokeTwice(Invokable())
    // numberOfInvocations=1
    // numberOfInvocations=2
}
</source>
</source>
<source lang='kotlin'>
<source lang='kotlin'>
24번째 줄: 29번째 줄:
fun main(args: Array<String>) {
fun main(args: Array<String>) {
     val foo = Foo()
     val foo = Foo()
     foo()()()()
     foo()()()()()
     println("foo.count = [${foo.count}]")
     println("foo.count=${foo.count}")
     // foo.count = [4]
     // foo.count=5
}
}
</source>
</source>
41번째 줄: 46번째 줄:
     val foo1 = Foo()
     val foo1 = Foo()
     val foo2 = invokeTwice(foo1)
     val foo2 = invokeTwice(foo1)
     println("foo1.count=[${foo1.count}]")  
     println("foo1.count=${foo1.count}")  
     // foo1.count=[2]
     // foo1.count=2
     println("foo2.count=[${foo2.count}]")
     println("foo2.count=${foo2.count}")
     // foo2.count=[2]
     // foo2.count=2
}
}
</source>
</source>

2019년 4월 18일 (목) 03:08 판

1 개요

Kotlin invoke()
class Invokable {
    var numberOfInvocations: Int = 0
        private set
    operator fun invoke(): Invokable {
        numberOfInvocations++
        println("numberOfInvocations=${numberOfInvocations}");
        return this
    }
}
fun invokeTwice(invokable: Invokable) = invokable()()
fun main(args: Array<String>) {
    invokeTwice(Invokable())
    // numberOfInvocations=1
    // numberOfInvocations=2
}
class Foo {
    var count = 0;
    operator fun invoke(): Foo {
        count++
        return this
    }
}
fun main(args: Array<String>) {
    val foo = Foo()
    foo()()()()()
    println("foo.count=${foo.count}")
    // foo.count=5
}
class Foo {
    var count = 0;
    operator fun invoke(): Foo {
        count++
        return this
    }
}
fun invokeTwice(foo: Foo) = foo()()
fun main(args: Array<String>) {
    val foo1 = Foo()
    val foo2 = invokeTwice(foo1)
    println("foo1.count=${foo1.count}") 
    // foo1.count=2
    println("foo2.count=${foo2.count}")
    // foo2.count=2
}

2 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}