如何在 #each 下 #rewind 内部位置



我正在尝试编写一个代码,其中枚举序列倒带到开头。

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

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

有没有更好的方法——我相信有——来做到这一点?

使用 Ruby 核心类 libarary 中的 Enumerator#rewind 方法。

将枚举序列倒退到开头。如果封闭的对象响应"倒带"方法,则调用该方法。

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

相关内容

  • 没有找到相关文章

最新更新