範囲とマップにスプレッド演算子を適用することについていくつか質問があります。以下のコードを参照してください。エラー行がマークされています。
(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