rubyenumerator

How can I get the next n number of elements using a Ruby enumerator?


I am trying to get the next n number of elements using a Ruby enumerator, with this:

a = [1, 2, 3, 4, 5, 6]
enum = a.each
enum.next(2) # expecting [1, 2]
enum.next(2) # expecting [3, 4]

But #next does not support that.

What is the correct Ruby way to do that?


Solution

  • You can use take method

    enum.take(2)
    

    If you need slices of two elements, you could do:

    e = enum.each_slice(2)
    p e.next
    #=> [1, 2]
    p e.next
    #=> [3, 4]