如何创建一个无限的时代枚举? [英] How to create an infinite enumerable of Times?
本文介绍了如何创建一个无限的时代枚举?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望能够有一个对象将Ruby中的Enumerable扩展为星期一的无限列表(例如).
I want to be able to have an object extend Enumerable in Ruby to be an infinite list of Mondays (for example).
因此它将产生:3月29日,4月5日,4月12日......等等
So it would yield: March 29, April 5, April 12...... etc
如何在Ruby中实现呢?
How can I implement this in Ruby?
推荐答案
在1.9(以及可能使用backports
的早期版本)中,您可以轻松创建枚举器:
In 1.9 (and probably previous versions using backports
), you can easily create enumerator:
require 'date'
def ndays_from(from, step=7)
Enumerator.new {|y|
loop {
y.yield from
from += step
}
}
end
e = ndays_from(Date.today)
p e.take(5)
#=> [#<Date: 2010-03-25 (4910561/2,0,2299161)>, #<Date: 2010-04-01 (4910575/2,0,2299161)>, #<Date: 2010-04-08 (4910589/2,0,2299161)>, #<Date: 2010-04-15 (4910603/2,0,2299161)>, #<Date: 2010-04-22 (4910617/2,0,2299161)>]
这篇关于如何创建一个无限的时代枚举?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文