30
根據docs,Array.include?使用==比較對象。我來自Java,在這種情況下(通常)通過.equals()完成,這很容易覆蓋特定對象。Ruby中的覆蓋==運算符
如何在Ruby中覆蓋==以允許我指定的行爲Array.include?爲我的特定對象?
非常感謝。
根據docs,Array.include?使用==比較對象。我來自Java,在這種情況下(通常)通過.equals()完成,這很容易覆蓋特定對象。Ruby中的覆蓋==運算符
如何在Ruby中覆蓋==以允許我指定的行爲Array.include?爲我的特定對象?
非常感謝。
在Ruby ==
只是一個方法(在上面的一些語法糖讓你寫foo == bar
而不是foo.==(bar)
)和重寫==
就像你會任何其他方法:
class MyClass
def ==(other_object)
# return true if self is equal to other_object, false otherwise
end
end
太棒了,謝謝。這比我預期的要簡單得多。 – lynks
你還需要覆蓋hash和eql嗎?方法? – Vitalij
@Vitalij eql?通常只是==的別名,並且如果您打算在散列和集合中使用它,則需要重寫散列。 – bluehallu