التابع ==
الخاص بالصنف 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_module
X. - التابع
===
: يعيد القيمةtrue
إن كان الوسيط obj نسخة (instance ) من الوسيط mod أو من أحد الأصناف المنحدرة منه. استخدامه مع الوحدات (modules) محدود، ولكن يمكن استخدامه في عباراتcase
لتصنيف الكائنات بحسب الصنف.