Kit Ho
Kit Ho

Reputation: 26968

Ruby: Loop back Enumerator

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

Answers (2)

Bala
Bala

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

Stefan
Stefan

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

Related Questions