Groovy中1..5,[*1..5]和[1..5]之间有什么区别?

use*_*202 7 groovy range

在Groovy中,有什么区别,

def a=1..5
def b= [*1..5]
def c=[1..5]
Run Code Online (Sandbox Code Playgroud)

是什么*[*1..5]象征?

dma*_*tro 10

*代表一个传播运营商.阐述你的例子:

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
Run Code Online (Sandbox Code Playgroud)

延长@ ataylor的解释:

assert a.size() == 5
assert b.size() == 5
assert c.size() == 1
Run Code Online (Sandbox Code Playgroud)

要到达每个元素,c你必须迭代它(这是一个范围)

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

Haki先生的Groovy Goodness有一个详细的例子.


ata*_*lor 6

将范围对象放入列表时,会得到一个包含一个类型元素的列表IntRange:

assert [1..5].size() == 1
Run Code Online (Sandbox Code Playgroud)

通过应用扩展运算符,它会扩展范围,并获得一个包含五个元素的列表,范围表示的实际整数:

assert [*1..5].size() == 5
Run Code Online (Sandbox Code Playgroud)