【问题标题】:Groovy Closure SyntaxGroovy 闭包语法
【发布时间】:2011-01-12 15:52:01
【问题描述】:

如果我写

test = {
  println("Hello world");
}

这会在一个名为 test 的变量中创建一个闭包,我可以使用 test();

调用它

然而

test: {
  println("Hello world");
}

立即调用闭包,我不能用test();调用它

第二种语法的目的是什么?

【问题讨论】:

    标签: groovy closures


    【解决方案1】:

    这看起来像一个普通的旧标记 Java 代码块。不是 Groovy 闭包语法。这将只允许您在块内限定局部变量。如果它是另一种语法,我会避免它。

    public void do(){
     test:{
       String hello = "hello";
     }
    
     anotherTest:{
       String hello = "hello";
     }
    }
    

    【讨论】:

    • 正如您所说,这只是一个标记的代码块,而不是定义闭包的另一种方式。当然,OP 可能一直在尝试制作闭包图,例如:map = [ test:{ println 'Hi' } ] 这是一个完全有效的闭包定义
    • 感谢您提供额外的见解。发布后我几乎删除了我的答案,因为我可能只是扮演“船长”而不提供任何帮助。
    【解决方案2】:

    这样做时,您无需定义闭包,而是标记代码块。

    确实,正如this page states,Groovy 支持老式标签。

    是的。这对我来说也是一个惊喜。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2011-01-02
    相关资源
    最近更新 更多