私は、同じクラスのインスタンスをお互いに比較するテストに頼っています。Ruby:クラスのインスタンスをお互いに比較する
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)
私のクラス関数は、最初の2つのテストに合格できますが、最後のテストでは合格できません。私のコードで何が間違っていますか?
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 [email protected] || @day != @day
end
end
に渡された
val
の属性と現在のオブジェクトの属性を比較する必要があり、等しくないが([ 'BasicObject#!=']によって提供されhttp://ruby-doc.org/core-2.4.2/BasicObject.html#method-i-21-3D)。 – Stefan[Comparable](https://ruby-doc.org/core-2.4.2/Comparable.html)をインクルードし、<=>メソッド – steenslag