groovy1059_bug.groovy

来自「大名鼎鼎的java动态脚本语言。已经通过了sun的认证」· GROOVY 代码 · 共 54 行

GROOVY
54
字号
package groovy.bugs/** * TODO: GROOVY-1059 * *    Accessible to a closure attribute of an abject with the operator ".@". *    For examples, all of the expressions * *            object.@closure() *            object.@closure.call() *            object.@closure.doCall() *            (object.@closure)() * *    have the same meaning. * * @author  John Wilson * @author  Pilho Kim */class Groovy1059_Bug extends GroovyTestCase {    void testClosureAsAttribute() {        def x = new Groovy1059Foo()        println( x.say() )        println( (x.@say)() )        println( x.@say() )  // TODO: Groovy-1059 should work        println( x.@say.call() )        println( x.@say.doCall() )        println( x.@say2() )        assert "I am a Method" == x.say()        assert "I am a Method" == x.@say2()        assert "I am a Closure" == (x.@say)()        assert "I am a Closure" == x.@say()        assert x.@say() == (x.@say)()        assert x.@say() == x.@say.call()        assert x.@say() == x.@say.doCall()        assert x.@say() != x.say()        assert x.@say2() == x.say()    }}class Groovy1059Foo {    def public say = { it -> return "I am a Closure" }    def public say2 = this.&say    public Object say() {       return "I am a Method"    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?