المعامل ==
في الصنف BasicObject
في روبي
يتحقق المعامل == من تساوي كائنين.
عمومًا، يُعاد تعريف هذا التابع في الأصناف السليلة (descendant
classes
) بما يتناسب مع تلك الأصناف. خلافًا للمعامل ==، يجب ألا يُعاد تعريف التابع equal?
? من قِبل الأصناف الفرعية، إذ يُستخدم آنذاك لتحديد هوية الكائن (أي يستعمل بالشكل a
. equal?
?(b
) لتحديد إذا وفقط إذا كان الكائن a
هو نفسه الكائن b
[انظر المثال في الأسفل]).
يعمل التابع eql?
? على التحقق إذا كان الكائن الذي استُدعي معه والكائن الذي مُرّر إليه هما نفس الكائن أو يشيران إلى نفس مفتاح الخريطة (hash
key
). ويُستخدم هذا التابع من قِبل كائنات الصنف Hash
للتحقق من تساوي العناصر. بالنسبة لكائنات الصنف Object
، يكون استعمال التابع eql?
? مماثلًا لاستعمال المعامل ==.
تستمر الأصناف الفرعية بتطبيق هذا الأمر وذلك بجعل التابع eql?
? اسمًا بديلًا للمعامل == المُعاد تعريفه (overridden
) في تلك الأصناف، ولكن هنالك استثناءات دومًا. يُجرَى للأنواع العددية (Numeric
types
) مثلًا عمليات تحويل عند موازنتها باستعمال المعامل == فقط، وليس باستعمال التابع ??eql
. إليك المثال التالي الذي يوضح ذلك:
1 == 1.0 #=> true
1.eql?
? 1.0 #=> false
البنية العامة
obj == other → true or false
القيم المعادة
تعاد القيمة true
إن كان الكائن obj
مساويًّا للكائن other
، أو القيمة false
خلاف ذلك.
أمثلة
مثال على استخدام المعامل ==:
obj = "a"
other = obj.dup
obj == other #=> true
obj.equal? other #=> false
obj.equal? obj #=> true
انظر أيضًا
- التابع
equal?
?: يتحقق إذا كان الكائن الذي استُدعي معه والكائن الذي مُرّر إليه هما نفس الكائن أو يشيران إلى نفس مفتاح الخريطة (hash
key
). - المعامل !=: يتحقق من عدم تساوي كائنين.
- المعامل !: يعيد المعامل ! نفي العبارة المنطقية المصاحبة له.
مصادر
- قسم المعامل == في الصنف BasicObject في توثيق روبي الرسمي.