المعامل ==
الخاص بالصنف 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
التي تقع على يساره صنفًا فرعيًّا من الوحدة التي تقع على يمينه.
- المعامل
<=>
: يجري عملية الموازنة بين كائنين ثم يعيد الناتج الذي يشير إلى العلاقة بينهما.