2013-08-19 127 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

相關問題