Groovy中的范围和列表没有完全打印出来

emeijp43  于 2023-05-06  发布在  其他
关注(0)|答案(1)|浏览(142)

谁能解释一下为什么1a和2a行不能打印出整个范围,而1b、1c、2b和2c行可以?
脚本

println GroovySystem.version
def range = 1..5
printf "1a: range %s %n", range
printf "1b: range %s %n", range.toString()
printf "1c: range %s %n", range, ""
printf "2a: range %s %n", range.asList()
printf "2b: range %s %n", range.asList().toString()
printf "2c: range %s %n", range.asList(), ""

输出

3.0.9
1a: range 1 
1b: range 1..5 
1c: range 1..5 
2a: range 1 
2b: range 1..5 
2c: range 1..5

我是groovy的新手,但我希望1a和1c是相同的(2a和2c也是如此)。

cld4siwp

cld4siwp1#

def range = 1..5

printf "1a: range %s %n", range
printf "1b: range %s %n", 1,2,3,4,5    //same as 1a
printf "1c: range %s %n", *range, ""   //same as 1,2,3,4,5,""

printf "2a: range %s %n", range, ""
printf "2b: range %s %n", [range, ""]  //same as 2a
printf "2c: range %s %n", [range]

结果

1a: range 1 
1b: range 1 
1c: range 1 
2a: range 1..5 
2b: range 1..5 
2c: range 1..5

printf的所有参数都以列表的形式传递。
所以,如果你只传递一个参数,那就是一个列表,那么列表中的每个元素都被认为是一个单独的参数。
这意味着1a1b是等价的
这就是为什么所有的1*例子都只给出列表的第一个元素(范围)
2c显示了解决此问题的方法

相关问题