有没有办法表达“无限时间”?

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

我尝试过(DateTime.now .. nil) ,但是Range类不允许不同类的对象成为相同范围的端点。 (尝试使用此属性创建Range导致ArgumentError: bad value for range 。)

时间是否等于无穷大,即Time.now + (1.0/0.0) ? 或者,有没有办法绕过Range类的要求,即它的minmax是同一个类?

可以使用DateTime::Infinity类:

 future = DateTime.now..DateTime::Infinity.new future.include?(1_000_000.years.from_now) #=> true 
 range = (Time.now.to_f .. Float::INFINITY) range.include?(Time.now.to_f) # => true sleep 1 range.include?(Time.now.to_f) # => true range.include?(Float::INFINITY) # => true 

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

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