المعامل == الخاص بالصنف Module في روبي
يتحقق معامل التساوي == من تساوي كائنين.
البنية العامة
obj == other → true or false
equal?(other)→ true or false
eql?(other) → true or false
في مستوى الصنف Object، يعيد المعامل == القيمة true فقط إن كان obj و other نفس الكائن. بشكل عام، يٌعاد تعريف هذا التابع في الأصناف المنحدرة (descendant classes) لتخصيصه للصنف المُستخدم.
بخلاف المعامل ==، لا يجب أبدًا إعادة تعريف التابع equal? في الأصناف الفرعية (subclasses)، لأنه يُستخدَم لتحديد هوية الكائن (أي أنّ a.equal?(b) تعيد true إذا وفقط إذا كان a هو نفسه الكائن b).
يعيد التابع eql? القيمة true إن كان للكائنين obj و other نفس مفتاح النوع Hash (أي hash key). ويُستخدم من قبل Hash لاختبار التساوي بين العناصر. بالنسبة للكائنات التي من الصنف Object، فإنّ eql? مرادف للمعامل ==.
عادة ما تسير الأصناف الفرعية على هذا النهج عبر جعل eql? اسمًا مرادفًا للمعامل == المٌعاد تعريفه، ولكن هناك استثناءات. تجري الأنواع العددية (Numeric)، على سبيل المثال، عمليات تحويل الأنواع عند استخدام ==، ولكن ليس عند استخدام eql?.
المعاملات
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إن كانت الوحدةModuleالتي تقع على يساره صنفًا فرعيًّا من الوحدة التي تقع على يمينه.
- المعامل
<=>: يجري عملية الموازنة بين كائنين ثم يعيد الناتج الذي يشير إلى العلاقة بينهما.