الفرق بين المراجعتين ل"Ruby/Module/3D-3D"

من موسوعة حسوب
< Ruby‏ | Module
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>==‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف:...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Module]]
 
[[تصنيف: Ruby Module]]
معامل التساوي - في المستوى <code>Object</code> ، يعي المعامل <code>==</code> القيمة <code>true</code> فقط إن كان <code>obj</code> و <code>other</code> نفس الكائن. بشكل عام، يٌعاد تعريف هذا التابع في الأصناف المنحدرة (descendant classes) لتخصيصه للصنف.
+
معامل التساوي - على مستوى الصنف <code>[[Ruby/Object|Object]]</code> ، يعيد المعامل <code>==</code> القيمة <code>true</code> فقط إن كان <code>obj</code> و <code>other</code> (انظر فقرة البنية العامة) نفس الكائن. بشكل عام، يٌعاد تعريف هذا التابع في الأصناف المنحدرة (descendant classes) لتخصيصه للصنف المُستخدم.
بخلاف <code>==</code> ، لا يجب أبداً إعادة تعريف التابع <code>equal?</code> من الأصناف الفرعية لأنه يُستخدم لتحديد هوية الكائن (أي أنّ <code>a.equal?(b)</code> إذا وفقط إذا كان <code>a</code> هو نفسه الكائن <code>b</code>):
 
  
يعيد التابع <code>eql?</code> القيمة <code>true</code> إن كان للكائنين نفس <code>obj</code> و <code>other</code> مفتاح التكويد (hash key).  ويُستخدم من قبل <code>Hash</code> لاختبار التساوي بين الأعضاء.  بالنسبة للكائنات من الصنف <code>Object</code> ، فإنّ <code>eql?</code> مرادف لـ <code>==</code>. عادة ما تسير الأصناف الفرعية على هذا النهج عبر جعل <code>eql?</code> اسما مرادفًا للتابع المٌعاد تعريفه <code>==</code>، ولكن هناك استثناءات.  أنواع <code>Numeric</code>، على سبيل المثال ، تجري عمليات تحويل الأنواع عند استخدام <code>==</code>، ولكن ليس عند استخدام <code>eql?</code>، لذلك:
+
بخلاف <code>==</code> ، لا يجب أبداً إعادة تعريف التابع <code>equal?‎</code> في الأصناف الفرعية (subclasses)، لأنه يُستخدم لتحديد هوية الكائن (أي أنّ <code>a.equal?(b)‎</code> تعيد <code>true</code> إذا وفقط إذا كان <code>a</code> هو نفسه الكائن <code>b</code>).
 +
 
 +
يعيد التابع <code>eql?</code> القيمة <code>true</code> إن كان للكائنين <code>obj</code> و <code>other</code> نفس  مفتاح التكويد (hash key).  ويُستخدم من قبل <code>Hash</code> لاختبار التساوي بين الأعضاء.  بالنسبة للكائنات من الصنف <code>[[Ruby/Object|Object]]</code>، فإنّ <code>eql?</code> مرادف لـ <code>==</code>.
 +
 
 +
عادة ما تسير الأصناف الفرعية على هذا النهج عبر جعل <code>eql?</code> اسما مرادفًا للمعامل <code>==</code> المٌعاد تعريفه ، ولكن هناك استثناءات.  الأنواع العددية (<code>Numeric)</code>، على سبيل المثال ، تجري عمليات تحويل الأنواع عند استخدام <code>==</code>، ولكن ليس عند استخدام <code>eql?</code>،
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">obj == other  → true or false
 
<syntaxhighlight lang="ruby">obj == other  → true or false
سطر 12: سطر 15:
 
eql?(other)  → true or false‎</syntaxhighlight>
 
eql?(other)  → true or false‎</syntaxhighlight>
 
==المعاملات==
 
==المعاملات==
 +
===<code>obj</code>===
 +
الطرف الأول للمقارنة.
 
===<code>other‎</code>===
 
===<code>other‎</code>===
 
+
الطرف الثاني للمقارنة.
 
 
 
==القيمة المُعادة==
 
==القيمة المُعادة==
 +
يعيد المعامل <code>==</code> القيمة <code>true</code> فقط إن كان <code>obj</code> و <code>other</code>نفس الكائن. بشكل عام، وإلا فسيعيد <code>false</code>.
  
 
==أمثلة==
 
==أمثلة==
مثال على استخدام التابع <code>==‎</code>:
+
مثال على استخدام التابع <code>==‎</code>:<syntaxhighlight lang="ruby">obj = "a"
<syntaxhighlight lang="ruby">obj = "a"
 
 
other = obj.dup
 
other = obj.dup
 
obj == other      #=> true
 
obj == other      #=> true
 
obj.equal? other  #=> false
 
obj.equal? other  #=> false
obj.equal? obj    #=> true‎</syntaxhighlight>
+
obj.equal? obj    #=> true‎
 +
 
 +
1 == 1.0    #=> true
 +
1.eql? 1.0  #=> false</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
* التابع <code>[[Ruby/Module/3C-3D-3E|<=>]]</code>: يجري عملية المقارنة - حيث يعيد إحدى القيم -1 أو 0 أو +1 أو nil اعتمادًا على ما إذا كان <code>module</code> يتضمن <code>other_module</code>، أو يتساويان، أو إذا كان <code>module</code> متضمَّنًا في <code>other_module</code>X.
+
*التابع <code>[[Ruby/Module/3D-3D-3D|===]]</code>: يعيد القيمة <code>true</code> إن كان الوسيط <code>obj</code> نسخة (instance ) من الوسيط <code>mod</code> أو من أحد الأصناف المنحدرة منه.
* التابع <code>[[Ruby/Module/3D-3D-3D|===]]</code>: يعيد القيمة <code>true</code> إن كان الوسيط obj نسخة (instance ) من الوسيط mod أو من أحد الأصناف المنحدرة منه. استخدامه مع الوحدات (modules) محدود، ولكن يمكن استخدامه في عبارات <code>case</code> لتصنيف الكائنات بحسب الصنف.
+
 
 +
* التابع <code>[[Ruby/Module/3C|<]]</code>: يعد القيمة <code>true</code> إن كان الوسيط <code>mod</code>  صنفًا فرعيا من <code>other</code>. أو يعيد<code>nil</code> إن لم تكن بينهما أي علاقة.
 +
 
 +
*التابع <code>[[Ruby/Module/3C-3D-3E|<=>]]</code>: يجري  عملية المقارنة.
  
 +
*التابع <code>[[Ruby/Module/3D-3D|==]]</code>: معامل التساوي
 
==مصادر==
 
==مصادر==
 
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-3D-3D قسم  التابع ==‎ في الصنف Module‎ في توثيق روبي الرسمي.]
 
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-3D-3D قسم  التابع ==‎ في الصنف Module‎ في توثيق روبي الرسمي.]

مراجعة 20:13، 26 أكتوبر 2018

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

مصادر