在Python中,我们可以编写类似的东西来生成所有正整数:
def integer():
count = 0
while True:
count += 1
yield count
有没有办法在Ruby中编写类似的生成器?
答案 0 :(得分:2)
非常相似:
def integer
Enumerator.new do |y|
n = 0
loop do
y << n
n += 1
end
end
end
可以这样使用:
integer.take(20).inject(&:+)
# => 190
答案 1 :(得分:1)
你想要一个懒惰的枚举器。在Ruby 2.3.1中(至少可以追溯到Ruby 2.2.0),您可以通过混合Enumerator::Lazy来自己创建一个。
但是,如果你想要的只是一个无限的整数流,你可以使用一个Range对象。例如:
git push --force origin tests