Ruby 1.8.7:
> r = (Date.civil(2010, 12, 1)..Date.civil(2010, 12, 31))
> r.include? DateTime.civil(2010,12,28,15,0)
=> trueRuby 1.9.2
> r = (Date.civil(2010, 12, 1)..Date.civil(2010, 12, 31))
> r.include? DateTime.civil(2010,12,28,15,0)
=> false谁知道为什么?,我更喜欢1.8.7的行为,这种不一致破坏了我的一些代码:(
发布于 2011-03-06 09:50:00
Ruby1.9中的Range对象的行为有所不同。之前,Range#include?实际上只是做了一个大于/小于的比较。但是,现在它遍历范围内的每一项(在本例中为日期),并将您的值与每一项进行比较。
Ruby1.9添加了Range#cover?,它的行为类似于Range#include?的1.8版本--然而,它并不向后兼容Ruby1.8。
> r.cover? DateTime.civil(2010,12,28,15,0)
=> true更多信息:http://rhnh.net/2009/08/03/range-include-in-ruby-1-9
https://stackoverflow.com/questions/5208005
复制相似问题