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 が最初考えてたのと多少動きが違ったけど、慣れてしまえばこっちの方が便利かも。