التابع == الخاص بالصنف Module في روبي
معامل التساوي - في المستوى Object ، يعي المعامل == القيمة true فقط إن كان obj و other نفس الكائن. بشكل عام، يٌعاد تعريف هذا التابع في الأصناف المنحدرة (descendant classes) لتخصيصه للصنف.
بخلاف == ، لا يجب أبداً إعادة تعريف التابع equal? من الأصناف الفرعية لأنه يُستخدم لتحديد هوية الكائن (أي أنّ a.equal?(b) إذا وفقط إذا كان a هو نفسه الكائن b):
يعيد التابع eql? القيمة true إن كان للكائنين نفس obj و other مفتاح التكويد (hash key). ويُستخدم من قبل Hash لاختبار التساوي بين الأعضاء. بالنسبة للكائنات من الصنف Object ، فإنّ eql? مرادف لـ ==. عادة ما تسير الأصناف الفرعية على هذا النهج عبر جعل eql? اسما مرادفًا للتابع المٌعاد تعريفه ==، ولكن هناك استثناءات. أنواع Numeric، على سبيل المثال ، تجري عمليات تحويل الأنواع عند استخدام ==، ولكن ليس عند استخدام eql?، لذلك:
البنية العامة
obj == other → true or false
equal?(other)→ true or false
eql?(other) → true or false
المعاملات
other
القيمة المُعادة
أمثلة
مثال على استخدام التابع ==:
obj = "a"
other = obj.dup
obj == other #=> true
obj.equal? other #=> false
obj.equal? obj #=> true
انظر أيضا
- التابع
<=>: يجري عملية المقارنة - حيث يعيد إحدى القيم -1 أو 0 أو +1 أو nil اعتمادًا على ما إذا كانmoduleيتضمنother_module، أو يتساويان، أو إذا كانmoduleمتضمَّنًا فيother_moduleX. - التابع
===: يعيد القيمةtrueإن كان الوسيط obj نسخة (instance ) من الوسيط mod أو من أحد الأصناف المنحدرة منه. استخدامه مع الوحدات (modules) محدود، ولكن يمكن استخدامه في عباراتcaseلتصنيف الكائنات بحسب الصنف.