有没有一种方法可以在Ruby中循环枚举器?考虑以下代码片段:
a=[1,2,3]
a.to_enum
a.next => 1
a.next => 2
a.next => 3
a.next => 1
当枚举器到达最后一个元素时,如何使next
方法返回到第一个元素?
a=[1,2,3]
a.to_enum
a.next => 1
a.next => 2
a.next => 3
a.next => 1
当枚举器到达最后一个元素时,如何使next
方法返回到第一个元素?
你可以使用 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
Enumerator#peek
,例如enum = a.cycle; enum.peek
。 - Patrick Oscitypeek
,您可以通过在消耗输出之后而不是之前调用next
来实现相同的效果。 - Patrick Oscity