小日期和大日期的良性值

时间:2015-05-05 19:29:26

标签: ruby

我必须编写一个返回日期的函数。在某些情况下,它返回"零"日期,在某些情况下它会返回"无穷大"日期。零和无穷大意味着分别比任何正确日期更小和更大的值。我应该回报什么价值?

我正在考虑使用<=>方法定义创建类:

class ZeroDate
  def <=>(val)
    -1
  end

  include Comparable
end

通过检查比较对象是否为Date类,可以丰富这种方法,因此不能在错误的上下文中使用。

只要我的对象是接收器,它就能很好地工作,但是没有办法确保这个对象的用户将它放在比较的左侧。

您会建议其他什么解决方案?

1 个答案:

答案 0 :(得分:0)

由于<=>运算符仅执行<=,然后>,您可以定义这三个运算符以返回true,{{1分别是false,你应该完全涵盖所有案例。

修改

你是对的,这是相同的,并没有回答你问的问题。我会尽力弥补它:

如果您从false继承ZeroDate,那么它们将具有可比性

Date

并且比较可以互换

require 'date'

class ZeroDate < Date
  def <=>(val)
    -1
  end
end