List と Range の動き方が楽しい

Groovy って型制約もあるし、クロージャーもあるし、相当いい感じ (*´¬`)
というわけで Groovyイン・アクション の 4.2.2 リスト演算子 らへんを読み進め中。
そこでListとRangeの組み合わせ技が出て来たので、色々試してみた。

myList_1 = ['a', 'b', 'c', 'd', 'e', 'f']
myList_1[1..1] = ['y', '1', '2']
assert myList_1 == ['a', 'y', '1', '2', 'c', 'd', 'e', 'f']

myList_2 = ['a', 'b', 'c', 'd', 'e', 'f']
myList_2[1] = ['y', '1', '2']
assert myList_2 == ['a', ['y', '1', '2'], 'c', 'd', 'e', 'f']

myList_3 = ['a', 'b', 'c', 'd', 'e', 'f']
myList_3[1..3] = ['y', '1', '2']
assert myList_3 == ['a', 'y', '1', '2', 'e', 'f']

myList_4 = ['a', 'b', 'c', 'd', 'e', 'f']
myList_4[1..5] = ['y', '1', '2']
assert myList_4 == ['a', 'y', '1', '2']

なるほどねー。
直接 index 指定すると該当箇所の Object が置き換わって、Rangeだと該当範囲が置換されるっぽいですね。
myList_3 と myList_4 が最初考えてたのと多少動きが違ったけど、慣れてしまえばこっちの方が便利かも。