التابع ==‎ الخاص بالصنف Module في روبي

من موسوعة حسوب
< Ruby‏ | Module
مراجعة 20:05، 26 أكتوبر 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>==‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف:...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

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

مصادر