Ruby 有没有一种表达';无限时间';?

Ruby 有没有一种表达';无限时间';?,ruby,Ruby,我用这个类来表示一系列的时间。现在我想要一个表示给定时间后任意点的范围 我尝试了(DateTime.now..nil),但是范围类不允许不同类的对象成为同一范围的端点。(尝试使用此属性创建范围,会导致参数错误:范围的值不正确) 时间是否有无穷大的等价物,即time.now+(1.0/0.0)?或者,是否有办法绕过范围类的要求,即其min和max值属于同一类?Range=(Time.now.to_f..Float::INFINITY) 范围.include?(时间.now.to#f)#=>真 睡眠

我用这个类来表示一系列的时间。现在我想要一个表示给定时间后任意点的范围

我尝试了
(DateTime.now..nil)
,但是
范围
类不允许不同类的对象成为同一范围的端点。(尝试使用此属性创建
范围
,会导致
参数错误:范围的值不正确

时间是否有无穷大的等价物,即
time.now+(1.0/0.0)
?或者,是否有办法绕过
范围
类的要求,即其
min
max
值属于同一类?

Range=(Time.now.to_f..Float::INFINITY)
范围.include?(时间.now.to#f)#=>真
睡眠1
范围.include?(时间.now.to#f)#=>真
范围.包括?(浮点::无限)#=>真

当需要表示无限时间时,可以使用您自己创建的不同类中的对象。只需实现匹配运算符和使用的任何其他方法,就可以与范围对象互换使用

class TimeRange
    def initialize(min, max)
    ...
    end
end

可以使用
DateTime::Infinity
class:

future=DateTime.now..DateTime::Infinity.new
未来。包括?(1_000_000.年。从现在开始)#=>正确

Ah,我可以将时间表示为浮点数;我想这可能行得通。只是不要尝试将范围转换为数组。“你会等很长时间的。”事实上,铁皮人。在有浮标的靶场上打球是行不通的。您得到
TypeError:无法从Float进行迭代嘿,真管用!有趣的是,似乎没有关于这方面的任何文档。的文档中根本没有提到Infinity类。这种方法的唯一问题是,它似乎不适用于“负”无限。这是有效的:
DateTime.now>(-DateTime::Infinity.new)
,但是
(-DateTime::Infinity.new)…(DateTime::Infinity.new))。包括哪些?DateTime.now
没有,并且
(-DateTime::Infinity.new)
引发了一个异常。此外,在这个答案中的示例中,您需要
date
active\u support/core\u ext
。负无穷大:DateTime::Infinity.new(-1)DateTime::Infinity.new(-1)似乎无法处理范围:DateTime::Infinity.new(-1)…DateTime.now提供ArgumentError:的错误值range@AndrewKS
DateTime::Infinity.new(-1)…DateTime.now
由于以下原因无法工作: