2012-06-25 15 views
30

में == ऑपरेटर ओवरराइड docs, Array.include के अनुसार? वस्तुओं पर तुलना == का उपयोग करता है। मैं जावा से आया हूं जहां ऐसी चीजें हैं (आमतौर पर) .equals() जो किसी विशेष वस्तु के लिए ओवरराइड करना आसान है।रुबी

मैं == रूबी में कैसे ओवरराइड कर सकता हूं ताकि मुझे Array.include के व्यवहार को निर्दिष्ट करने की अनुमति मिल सके? मेरी विशेष वस्तु के लिए?

बहुत धन्यवाद।

उत्तर

61

रूबी == में सिर्फ एक तरीका है और आप ठीक उसी तरह == ओवरराइड (आप foo == bar बजाय foo.==(bar) लिखने के लिए अनुमति देता है शीर्ष पर कुछ वाक्य रचना चीनी के साथ) है किसी भी अन्य विधि:

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

शानदार है, धन्यवाद। यह अपेक्षा की तुलना में बहुत आसान था। – lynks

+3

क्या आपको हैश और ईक्ल को ओवरराइट करने की आवश्यकता होगी? तरीकों? – Vitalij

+0

@Vitalij eql? आमतौर पर == के लिए केवल उपनाम होता है, और यदि आप इसे हैश और सेट में उपयोग करना चाहते हैं तो आपको हैश को ओवरराइड करने की आवश्यकता है। – bluehallu