加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 无限枚举器倒带

发布时间:2020-12-17 02:37:23 所属栏目:百科 来源:网络整理
导读:我有一个函数,以下列方式生成枚举器: def create_example_enumerator(starting_value) current = starting_value e = Enumerator.new do |y| loop do current += 1 y current end endend 目前的行为非常简单. e = create_example_enumerator(0)#Enumerator:
我有一个函数,以下列方式生成枚举器:

def create_example_enumerator(starting_value)
  current = starting_value
  e = Enumerator.new do |y|
    loop do
      current += 1
      y << current
    end
  end
end

目前的行为非常简单.

> e = create_example_enumerator(0)
#<Enumerator: details>
> e.next
1
> e.next
2
> e.rewind
#<Enumerator: details>
> e.next
3

我希望e.rewind将枚举器重置为它的起始值.
有没有一种很好的方法可以在使用无限枚举器的同时做到这一点?

解决方法

这应该工作:

n = Enumerator.new do |y|
  number = 1
  loop do
    y.yield number
    number += 1
  end
end

n.next #=> 1
n.next #=> 2
n.next #=> 3
n.rewind
n.next #=> 1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读