Groovy 闭包语法

发布于 2024-10-12 06:35:19 字数 288 浏览 1 评论 0原文

如果我写

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

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

,但是

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

立即调用闭包,我无法使用 test 调用它();

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

If I write

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

That creates a closure in a variable called test that I can invoke with test();

However

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

Immediately invokes the closure and I cannot invoke it with test();

What is the purpose of the second syntax?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

沉默的熊 2024-10-19 06:35:19

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

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

 anotherTest:{
   String hello = "hello";
 }
}

That looks like a plain old labeled block of java code. Not Groovy closure syntax. Which would just allow you to scope the local variables within the block. If it is an alternative syntax I would avoid it.

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

 anotherTest:{
   String hello = "hello";
 }
}
掩于岁月 2024-10-19 06:35:19

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

事实上,正如本页所述,Groovy 支持老式标签。

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

When doing so, you don't define a closure, but rather label a code block.

Indeed, as this page states, Groovy supports old-school labels.

Yup. it's also a big surprise to me.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文