Ale*_*sky 3 ruby enumerable lazy-evaluation
我希望能够在Ruby中将对象扩展为Enumerable,以便成为周一的无限列表(例如).
所以它会产生:3月29日,4月5日,4月12日......等等
我怎样才能在Ruby中实现它?
Mla*_*vić 12
在1.9(可能以前的版本中使用backports)中,您可以轻松创建枚举器:
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)>]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |