Ruby:循环迭代器

3
有没有一种方法可以在Ruby中循环枚举器?考虑以下代码片段:
a=[1,2,3]
a.to_enum

a.next => 1
a.next => 2
a.next => 3
a.next => 1

当枚举器到达最后一个元素时,如何使next方法返回到第一个元素?

2个回答

8

你可以使用 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

谢谢你帮我解决问题,但是我该如何获取指针当前所指向的值? - TheOneTeam
1
@KitHo可以使用Enumerator#peek,例如enum = a.cycle; enum.peek - Patrick Oscity
文档中说:返回枚举器中的下一个对象,但不会将内部位置向前移动。如果位置已经在末尾,则引发StopIteration异常。有时我只想检查内部指针指向的当前值。 - TheOneTeam
通常情况下,您只需将其保存在变量中。使用 peek,您可以通过在消耗输出之后而不是之前调用 next 来实现相同的效果。 - Patrick Oscity

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接