0

我有几个关于在范围和地图上应用扩展运算符的问题。请参阅下面的代码,错误行已标记。

(1) "assert" 适用于更新的范围,但为什么 "println" 不打印呢?

(2) 当我们说“*range”时,groovy 可以找出并扩展范围。那么为什么 " map" 也不起作用,为什么我们需要说 " :map" 呢?

def range = (1..3)
println range // prints: [1,2,3]

assert [0,1,2,3] == [0,*range] // works ok
println [0, *range] // error

def map = [a:1, b:2]
assert [a:1, b:2, c:3] == [c:3, *:map] // works ok
assert [a:1, b:2, c:3] == [c:3, *map] // error
4

1 回答 1

1

你打电话时:

println [0, *range]

它试图调用getAt一个属性println。您需要将列表括在大括号中以帮助解析器:

println( [ 0, *range ] )

对于第二个错误,*这种形式是扩展运算符。它用于传播列表。

您有一张地图,因此需要使用扩展地图运算符*:(如您所见)

于 2012-11-08T09:24:23.457 回答