2013-08-28 83 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返回等價值。