2012-06-25 27 views
30

docs, Array.include?, nesneler üzerinde == karşılaştırmasını kullanır. Bu tür şeylerin (genellikle) .equals() ile yapıldığı ve belirli bir nesne için geçersiz kılındığı Java'dan geliyorum.Ruby'de geçersiz kılma == işleci

nasıl beni Array.include davranışını belirtmek için izin Ruby == geçersiz kılabilir? Belirli bir nesne için?

Çok teşekkürler. Ruby == yılında

cevap

61

sadece ve sadece sizin gibi == geçersiz (eğer foo == bar yerine foo.==(bar) yazmak için izin üstünde bazı sözdizimi şeker) bir yöntemdir başka herhangi bir yöntem:

class MyClass 
    def ==(other_object) 
    # return true if self is equal to other_object, false otherwise 
    end 
end 
+3

fantastik, teşekkürler. Beklediğimden çok daha kolaydı. – lynks

+3

Ayrıca hash ve eql'nin üzerine yazmak ister misiniz? yöntemler? – Vitalij

+0

@Vitalij eql? genellikle sadece == için bir takma addır ve bunu hash'larda ve kümelerde kullanmak istediğinizde karma değerini geçersiz kılmanız gerekir. – bluehallu