不带括号的 Groovy 范围迭代

标签 groovy

下面的 Groovy 代码打印从 1 到 5 的数字范围。

(1..5).each {println it}

但是,当我忘记添加括号时,请执行以下操作:
1..5.each { println it}

它只打印 5

为什么这是合法的 Groovy 语法?我希望这要么表现得像 (1..5) 版本,要么抛出一个异常,说我忘记了括号。

最佳答案

5.each优先于 1..5在 Groovy 解析器中。它有效,因为它正在做这样的事情:

ret = 5.each { println it }
range = 1..ret
assert range == [1, 2, 3, 4, 5]
each的回归是集合本身

关于不带括号的 Groovy 范围迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26100086/

相关文章:

groovy - 使用groovy脚本构建hudson失败

xml - 使用Groovy标记构建器语法对Grails中的嵌套元素进行XML编码

Selenium 刷新

java - 如何在 MarkupBuilder 中使用 Groovy 将日期字符串转换为日历日期?

groovy - 如何在groovy中编写条件收集?

string - 最好的编码方式,字符串到 Groovy 中的映射转换

grails - Groovy PageRenderer无法呈现GSP

java - ElasticSearch Java API 的异步特性

grails - 在Grails服务中获取特定于环境的服务器应用程序URL

groovy - 如何验证一个对象是否具有某种属性?