Ruby の slice が便利になった
Python の
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10][1:10:3] #=>[2, 5, 8]
って便利ですよね。Ruby でこれをやろうとすると、ちょっと工夫が必要でした。
例えばこんな感じに。
1.step(9, 3).map { [*1..10][_1] } #=>[2, 5, 8]
しかし、これはいまではこんな風に書けるようです。
s = (1...10).step(3) s.class #=>Enumerator::ArithmeticSequence [*1..10].slice(s) #=>[2, 5, 8]
これの応用で、さらに短く書けます。
[*1..10].slice((1...10) % 3) #=>[2, 5, 8] [*1..10][(1...10) % 3] #=>[2, 5, 8]
便利ですね。