2013-08-28 51 views
2

假设我有一个数组如何使无限枚举

array = [1,2,3] 

我需要建立这样一个枚举,将在循环方式返回值:

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

我相信有一个整洁的解决方案可为

回答

5

Array#cycle/Enumerable#cycle做你在找什么:

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返回等价值。