什么';Groovy中1..5、[*1..5]和[1..5]之间的区别是什么?

什么';Groovy中1..5、[*1..5]和[1..5]之间的区别是什么?,groovy,range,Groovy,Range,在Groovy中 def a=1..5 def b= [*1..5] def c=[1..5] [*1..5]中的*代表什么?*代表一个符号。阐述你的例子: 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

在Groovy中

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

[*1..5]
中的
*
代表什么?

*
代表一个符号。阐述你的例子:

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
中的每个元素,必须对其进行迭代(这是一个范围)


Haki先生有一个详细的用法示例。

这里
*
(扩展运算符)扩展了范围
1..5
,因此您得到了该范围内的整数列表
[1,2,3,4,5]
当您将范围对象放入列表中时,您会得到一个包含
IntRange
类型的元素的列表:

assert [1..5].size() == 1
通过应用spread运算符,它扩展了范围,得到一个包含五个元素的列表,该范围表示的实际整数:

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

你已经把要点讲清楚了。谢谢!!:)清晰准确!谢谢现在可以接受一个合适的答案吗?
assert [*1..5].size() == 5