微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Groovy中的匿名代码块

有没有办法在Groovy中使用匿名代码块?例如,我正在尝试将以下Java代码转换为Groovy:

{
  int i = 0;
  System.out.println(i);
}
int i = 10;
System.out.println(i);

我能想出的最接近的翻译如下:

boolean groovyIsLame = true
if (groovyIsLame) {
  int i = 0
  println i
}
int i = 10
println i

我知道匿名代码块通常是一种反模式.但是拥有像“inputStream0”和“inputStream1”这样的名称的变量也是一个反模式,所以对于我正在研究的代码,匿名代码块会有所帮助.

解决方法:

您可以在Groovy中使用匿名代码块,但这些代码块和闭包之间的语法不明确.如果您尝试运行此操作,实际上会出现此错误:

Ambiguous expression could be either a
parameterless closure expression or an
isolated open code block; solution:
Add an explicit closure parameter
list, e.g. {it -> …}, or force it to
be treated as an open block by giving
it a label, e.g. L:{…} at line: 1,
column: 1

根据建议,您可以使用标签,它将允许您使用匿名代码块.在Groovy中重写Java代码:

l: {
  int i = 0
  println i
}
int i = 10
println i

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐