3

我正在尝试编写一个将枚举序列倒回到开头的代码。

我认为rewind适合这个应用程序,但我不确定如何在each传递给块的迭代器下实现它?在 Ruby-Docs 示例中,next用于将内部位置一次移动一个。有了块,它就会自动移动。

网上没有很多专门针对此的好例子。我目前的解决方法是将迭代器嵌套在循环下并break在迭代器下使用。当迭代器中断时,循环重置枚举序列。

有没有更好的方法——我确信有——这样做?

4

1 回答 1

4

使用Enumerator#rewindRuby 核心类库中的方法。

将枚举序列倒回到开头。如果封闭对象响应“倒回”方法,则调用该方法。

a = [1,2,3,4]
enum= a.each
enum  # => #<Enumerator: [1, 2, 3, 4]:each>
enum.next # => 1
enum.next  # => 2
enum.rewind # => #<Enumerator: [1, 2, 3, 4]:each>
enum.next # => 1
于 2014-01-18T22:25:24.173 回答