如何制作无限枚举器

meg*_*gas 2 ruby enumerator

假设我有一个数组

array = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

我需要创建一个以循环方式返回值的枚举器:

array.next #=> 1
array.next #=> 2
array.next #=> 3
array.next #=> 1
array.next #=> 2
...
Run Code Online (Sandbox Code Playgroud)

我相信这是一个很好的解决方案

Ste*_*fan 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
Run Code Online (Sandbox Code Playgroud)

(1..3).cycle 返回等效值.