Reputation: 26968
Is there a way to loop back an enumerator in Ruby? Given this piece of code:
a=[1,2,3]
a.to_enum
a.next => 1
a.next => 2
a.next => 3
a.next => 1
How can I make the next
method go back to the first element when the enumerator reached the last element?
Upvotes: 3
Views: 570
Reputation: 11244
you can also use rewind
Enumerator.html#rewind
a.rewind
Exactly same question I asked some time ago how-to-point-to-first-element-when-object-next-reached-the-end
Upvotes: 2
Reputation: 114178
You can use Enumerable#cycle
:
a = [1, 2, 3]
enum = a.cycle #=> #<Enumerator: [1, 2, 3]:cycle>
enum.next #=> 1
enum.next #=> 2
enum.next #=> 3
enum.next #=> 1
Upvotes: 8