megas
megas

Reputation: 21791

How to make infinite enumerator

Suppose I have an array

array = [1,2,3]

I need to create such a enumerator that will return values in cyclic manner:

array.next #=> 1
array.next #=> 2
array.next #=> 3
array.next #=> 1
array.next #=> 2
...

I believe there's a neat solution for that

Upvotes: 3

Views: 205

Answers (1)

Stefan
Stefan

Reputation: 114138

Array#cycle / Enumerable#cycle does what you are looking for:

e = [1,2,3].cycle  #=> #<Enumerator: [1, 2, 3]:cycle>

e.next             #=> 1
e.next             #=> 2
e.next             #=> 3
e.next             #=> 1
e.next             #=> 2

(1..3).cycle returns equivalent values.

Upvotes: 6

Related Questions