array_methods/strided_slices_parens.rb

tests/_examples/array_methods/strided_slices_parens.rb in the metorex repository.

# An arithmetic sequence subscript takes every nth element of a run, reading
# the bounds the way a range does and refusing a span wider than the array.
held = [0, 1, 2, 3, 4, 5]
p(held[(0..5).step(2)])
p(held[(1..).step(2)])
p(held[(..4).step(3)])
p(held[(0...5).step(2)])
p(held[(5..0).step(-2)])
p(held[(5..).step(-2)])
p(held[(6..).step(2)])

begin
  held[(0..6).step(2)]
rescue RangeError => problem
  puts(problem.message)
end

Output:

[0, 2, 4]
[1, 3, 5]
[0, 3]
[0, 2, 4]
[5, 3, 1]
[5, 3, 1]
[]
((0..6).step(2)) out of range