在IntRange上调用.each {}返回的范围不是每个整数

Mik*_*key 48 int each groovy range

我想我有一些有趣的期望......我想迭代从1到10的数字.作为一个while循环,它是这样的:

def countMe = 1
while (countMe<11) {
  println countMe
  countMe++
}
Run Code Online (Sandbox Code Playgroud)

我期待以下也会这样做:

[1..10].each { println it }
Run Code Online (Sandbox Code Playgroud)

但它实际上打印的是IntRange,而不是每个都Integer在范围内.什么是(语法上)最接近我[x..y].each{}幻想的方式来获得每个数字列表?

Eri*_*ric 91

使用括号不括号:

(1..10).each{println it}
Run Code Online (Sandbox Code Playgroud)

[1..10] 是包含单个范围的长度为1的列表.

  • 你需要记住[1..10]只表示一个范围,当它是另一个变量后的下标时.当它独立时,它就是一个范围的列表.这些小的不一致性产生了,因为Groovy试图用自己的附加功能扩展Java的语法. (3认同)