2013-08-19 86 views

回答

10

*代表Spread Operator。阐述你的例子:

a = 1..5 
b = [*1..5] 
c = [1..5] 

assert a.class.name == "groovy.lang.IntRange" //Is a range from 1 till 5 
assert b.class.name == "java.util.ArrayList" //Spread the range in a list 
assert c.class.name == "java.util.ArrayList" //Is a list 

扩展@ ataylor的解释:

assert a.size() == 5 
assert b.size() == 5 
assert c.size() == 1 

c达到每个元素,你必须遍历它(这是一个范围)

c.each{println it} 

Groovy Goodness通过哈基先生有一个详细的使用例子。

2

这里*(传播运营商)扩大了范围1..5,因此你在这个范围内[1, 2, 3, 4, 5]

6

的整数列表当你把一个范围内的对象列表中,你会得到一个清单,IntRange类型的一个元素:

assert [1..5].size() == 1 

通过应用传播运营商扩大其范围,你会得到一个清单,五行,实际整数范围表示:

assert [*1..5].size() == 5 
+0

你已经摆好了要点。谢谢!! :) – dmahapatro

+0

清晰准确!谢谢 – Chinmay

相关问题