当前位置: 首页 > 面试题库 >

Groovy中的匿名代码块

洪英豪
2023-03-14
问题内容

在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中使用匿名代码块,但这些代码和闭包之间的语法不明确。如果尝试运行此命令,则实际上会收到此错误:

歧义表达式可以是无参数的闭包表达式或隔离的开放代码块;解决方案:添加一个显式的闭包参数列表,例如{it->
…},或通过在第1行第1列的行上给它一个标签,例如L:{…},来强制将其视为开放块。 1个

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

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


 类似资料:
  • 可能重复: 什么是双大括号初始化在Java? 在查看一些遗留代码时,我遇到了一些非常令人困惑的问题: 在调试模式下运行代码后,我发现匿名块是在调用构造函数之后调用的。上面的功能和做的有什么不同: ?我会认为它们在功能上是等价的,并且会认为后一种方式是更好/更干净的编写代码的方式。

  • 问题内容: Java中是否有匿名代码块的实际用途? 请注意,这与命名块无关,即 。 问题答案: 它们限制变量范围。 但是,实际上,如果你发现自己使用了这样的代码块,则可能是你要将其重构为方法的信号。

  • 本文向大家介绍Javascript 实现匿名递归的实例代码,包括了Javascript 实现匿名递归的实例代码的使用技巧和注意事项,需要的朋友参考一下 递归是一种常见的编程技巧,实名递归相信大家都不陌生,但如果想要实现匿名递归呢?比如想要返回一个匿名递归函数,又或者是定义一个匿名递归函数并直接调用它,该怎样去做呢?本文将来探讨一下它的实现。 实名递归 我们还是先从实名递归说起吧,还是用那个最简单的

  • 解决方案是什么?只有4-5行代码隐藏并重新启动,然后完全成功运行,引导文件大小为149k。当我注释或删除4-5行代码时,它将无误运行!

  • 本文向大家介绍Python中的匿名函数,包括了Python中的匿名函数的使用技巧和注意事项,需要的朋友参考一下 这些函数被称为匿名函数,因为它们不是通过使用def关键字以标准方式声明的。您可以使用lambda关键字创建小的匿名函数。 Lambda形式可以接受任意数量的参数,但仅以表达式形式返回一个值。它们不能包含命令或多个表达式。 匿名函数不能直接调用print,因为lambda需要一个表达式 L

  • OpenSSL S_Server s_server-no_tls1_3-密码ADH-AES128-SHA:ADH-AES128-SHA256:ADH-AES256-SHA256-状态-接受本地主机:14000-nocert-msg 使用默认临时DH参数 accept ssl_accept:SSL初始化之前 TLS 1.0,Alert[length 0002],fataleunderted_mess