التابع == الخاص بالصنف Module في روبي
معامل التساوي - على مستوى الصنف Object ، يعيد المعامل == القيمة true فقط إن كان obj و other (انظر فقرة البنية العامة) نفس الكائن. بشكل عام، يٌعاد تعريف هذا التابع في الأصناف المنحدرة (descendant classes) لتخصيصه للصنف المُستخدم.
بخلاف == ، لا يجب أبداً إعادة تعريف التابع equal? في الأصناف الفرعية (subclasses)، لأنه يُستخدم لتحديد هوية الكائن (أي أنّ a.equal?(b) تعيد true إذا وفقط إذا كان 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
المعاملات
obj
الطرف الأول للمقارنة.
other
الطرف الثاني للمقارنة.
القيمة المُعادة
يعيد المعامل == القيمة true فقط إن كان obj و otherنفس الكائن. بشكل عام، وإلا فسيعيد false.
أمثلة
مثال على استخدام التابع ==:
obj = "a"
other = obj.dup
obj == other #=> true
obj.equal? other #=> false
obj.equal? obj #=> true
1 == 1.0 #=> true
1.eql? 1.0 #=> false
انظر أيضا
- التابع
===: يعيد القيمةtrueإن كان الوسيطobjنسخة (instance ) من الوسيطmodأو من أحد الأصناف المنحدرة منه.
- التابع
<: يعد القيمةtrueإن كان الوسيطmodصنفًا فرعيا منother. أو يعيدnilإن لم تكن بينهما أي علاقة.
- التابع
<=>: يجري عملية المقارنة.
- التابع
==: معامل التساوي