我必须编写一个返回日期的函数。在某些情况下,它返回"零"日期,在某些情况下它会返回"无穷大"日期。零和无穷大意味着分别比任何正确日期更小和更大的值。我应该回报什么价值?
我正在考虑使用<=>
方法定义创建类:
class ZeroDate
def <=>(val)
-1
end
include Comparable
end
通过检查比较对象是否为Date
类,可以丰富这种方法,因此不能在错误的上下文中使用。
只要我的对象是接收器,它就能很好地工作,但是没有办法确保这个对象的用户将它放在比较的左侧。
您会建议其他什么解决方案?
答案 0 :(得分:0)
由于 <=>
运算符仅执行<
,=
,然后>
,您可以定义这三个运算符以返回true
,{{1分别是false
,你应该完全涵盖所有案例。
修改强>:
你是对的,这是相同的,并没有回答你问的问题。我会尽力弥补它:
如果您从false
继承ZeroDate
,那么它们将具有可比性
Date
并且比较可以互换
require 'date'
class ZeroDate < Date
def <=>(val)
-1
end
end