التابع ==
الخاص بالصنف 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
إن لم تكن بينهما أي علاقة.
- التابع
<=>
: يجري عملية المقارنة.
- التابع
==
: معامل التساوي