3

枚举对象是从数组创建的a。是否有任何方法可以指出.first何时.next到达终点。

a = [5,1]
b = a.to_enum

b.next #=> 5
b.next #=> 1
b.next #=> Stop Iteration: Iteration reached an end. 

是否可以指向第一个元素,以便我可以再次使用下一个或指向上一个元素或循环?

b.prev #=> undefined method
b.previous #=> undefined method
4

3 回答 3

4

你可以使用循环

b.cycle(2) {|x| puts x} 

#=> 5
#=> 1
#=> 5
#=> 1

如果您想永远运行它,请不要将参数传递给循环。你可以直接在你的数组对象上调用它,即a

于 2013-09-06T06:14:03.833 回答
3
b = a.to_enum.cycle

请参阅有关循环的文档:

http://ruby-doc.org/core-2.0.0/Enumerable.html#method-i-cycle

于 2013-09-06T06:15:12.143 回答
1

使用Enumeration#rewind.

a = [5, 1]
b = a.to_enum
b.next
# 5
b.next
# 1
b.next
# StopIteration: iteration reached at end
b.rewind
b.next
# 5
# etc
于 2013-09-06T06:13:17.237 回答