我有一个测试,它依赖于将同一个类的实例相互比较。
d022 = SimpleDate.new(2016, 1, 1)
d023 = SimpleDate.new(2016, 1, 1)
d024 = SimpleDate.new(2016, 1, 2)
assert(d022 == d022)
assert(d022 == d023)
refute(d024 == d022)
我的类函数能够传递前两个测试但不能传递最后一个测试。我的代码中我做错了什么?
class SimpleDate
attr_reader :year, :month, :day
def initialize(year, month, day)
@year = year
@month = month
@day = day
end
def ==(val)
@year == @year && @month == @month && @day == @day
end
def !=(val)
@year != @year || @month !=@month || @day != @day
end
end
答案 0 :(得分:2)
我的代码中出错了什么?
您需要将值与自己进行比较。这看起来不可疑吗?
def ==(val)
@year == @year && @month == @month && @day == @day
end
提示:您未在此处以任何方式使用val
。
答案 1 :(得分:1)
您应该将当前对象的属性与传入
中的val
的属性进行比较
class SimpleDate
attr_reader :year, :month, :day
def initialize(year, month, day)
@year = year
@month = month
@day = day
end
def ==(val)
@year == val.year && @month == val.month && @day == val.day
end
def !=(val)
@year != val.year || @month != val.month || @day != val.day
end
end