Aaa = Struct.new(:a, :b)
x = Aaa.new
x.a, x.b = 1,2
y = Aaa.new
y.a, y.b = 1,2
x == y #=> true
Struct
==
, eql?
, और आप के लिए hash
परिभाषित करता है, ताकि दो Aaa
रों, बराबर हैं यदि a
और b
के लिए उनके मूल्यों बराबर हैं। यह initialize
को भी परिभाषित करता है ताकि ऑब्जेक्ट (Aaa.new(value_for_a, value_for_b)
) बनाते समय आप वैकल्पिक रूप से a
और b
के मानों को पार कर सकें। और [a,b]
लौटने के लिए यह to_a
को परिभाषित करता है।
तुम भी एक ब्लॉक के साथ Struct.new
का उपयोग अतिरिक्त पद्धतियां निर्धारित करने के कर सकते हैं, तो आप एक "सामान्य" वर्ग की पूरी शक्ति है: रूबी में वस्तुओं की तुलना होते हैं से निपटने के लिए
Aaa = Struct.new(:a, :b) do
def c
a+b
end
end
Aaa.new(23,42).C#=> 65
लेकिन अगर मैं अन्य वर्गों का उपयोग करके ऐसा करना चाहता हूं तो क्या होगा? या यदि 100 विशेषताएं हैं? – dfens
आपकी == (अन्य) विधि में, आप self.instance_variables.each do कर सकते हैं | ivar | self.ivar == other.ivar end आप भी === को देखना चाह सकते हैं। –
मेरे लिए काम किया, धन्यवाद – dfens