الفرق بين المراجعتين لصفحة: «Ruby/Module/3D-3D»

من موسوعة حسوب
< Ruby‏ | Module
لا ملخص تعديل
ط مراجعة وتدقيق.
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>==‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: المعامل <code>==‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Module]]
[[تصنيف: Ruby Module Class]]
معامل التساوي - على مستوى الصنف <code>[[Ruby/Object|Object]]</code> ، يعيد المعامل <code>==</code> القيمة <code>true</code> فقط إن كان <code>obj</code> و <code>other</code> (انظر فقرة البنية العامة) نفس الكائن. بشكل عام، يٌعاد تعريف هذا التابع في الأصناف المنحدرة (descendant classes) لتخصيصه للصنف المُستخدم.
يتحقق معامل التساوي <code>==</code> من تساوي كائنين.
==البنية العامة==
<syntaxhighlight lang="ruby">obj == other  → true or false
equal?(other)→ true or false
eql?(other)  → true or false‎</syntaxhighlight>في مستوى الصنف <code>[[Ruby/Object|Object]]</code>، يعيد المعامل <code>==</code> القيمة <code>true</code> فقط إن كان <code>obj</code> و <code>other</code> نفس الكائن. بشكل عام، يٌعاد تعريف هذا التابع في الأصناف المنحدرة (descendant classes) لتخصيصه للصنف المُستخدم.


بخلاف <code>==</code> ، لا يجب أبداً إعادة تعريف التابع <code>equal?‎</code> في الأصناف الفرعية (subclasses)، لأنه يُستخدم لتحديد هوية الكائن (أي أنّ <code>a.equal?(b)‎</code> تعيد <code>true</code> إذا وفقط إذا كان <code>a</code> هو نفسه الكائن <code>b</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>true</code> إن كان للكائنين <code>obj</code> و <code>other</code> نفس  مفتاح [[Ruby/Hash|النوع Hash]] (أي hash key). ويُستخدم من قبل <code>[[Ruby/Hash|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>،
عادة ما تسير الأصناف الفرعية على هذا النهج عبر جعل <code>eql?‎</code> اسمًا مرادفًا للمعامل <code>==</code> المٌعاد تعريفه، ولكن هناك استثناءات. تجري الأنواع العددية (Numeric)، على سبيل المثال، عمليات تحويل الأنواع عند استخدام <code>==</code>، ولكن ليس عند استخدام <code>eql?‎</code>.
==البنية العامة==
<syntaxhighlight lang="ruby">obj == other  → true or false
equal?(other)→ true or false
eql?(other)  → true or false‎</syntaxhighlight>
==المعاملات==
==المعاملات==
===<code>obj</code>===
===<code>obj</code>===
الطرف الأول للمقارنة.
الطرف الأول المراد التحقق من تساويه.
===<code>other‎</code>===
===<code>other‎</code>===
الطرف الثاني للمقارنة.
الطرف الثاني المراد التحقق من تساويه.
==القيمة المُعادة==
==القيمة المعادة==
يعيد المعامل <code>==</code> القيمة <code>true</code> فقط إن كان <code>obj</code> و <code>other</code>نفس الكائن. بشكل عام، وإلا فسيعيد <code>false</code>.
تعاد القيمة <code>true</code> فقط إن كان <code>obj</code> و <code>other</code> نفس الكائن، وإلا فستُعاد القيمة <code>false</code>.


==أمثلة==
==أمثلة==
سطر 32: سطر 32:
1.eql? 1.0  #=> false</syntaxhighlight>
1.eql? 1.0  #=> false</syntaxhighlight>
==انظر أيضا==
==انظر أيضا==
*التابع <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> إن كان الوسيط <code>obj</code> نسخة (instance ) من الوسيط <code>mod</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/3C|>]]</code>: يعيد القيمة <code>true</code> إن كانت الوحدة [[Ruby/Module|<code>Module</code>]] التي تقع على يساره صنفًا فرعيًّا من الوحدة التي تقع على يمينه.


*التابع <code>[[Ruby/Module/3D-3D|==]]</code>: معامل التساوي
*المعامل <code>[[Ruby/Module/3C-3D-3E|<=>]]</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‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 07:38، 18 نوفمبر 2018

يتحقق معامل التساوي == من تساوي كائنين.

البنية العامة

obj == other   true or false
equal?(other) true or false
eql?(other)   true or false

في مستوى الصنف Object، يعيد المعامل == القيمة true فقط إن كان obj و other نفس الكائن. بشكل عام، يٌعاد تعريف هذا التابع في الأصناف المنحدرة (descendant classes) لتخصيصه للصنف المُستخدم.

بخلاف المعامل ==، لا يجب أبدًا إعادة تعريف التابع equal?‎ في الأصناف الفرعية (subclasses)، لأنه يُستخدَم لتحديد هوية الكائن (أي أنّ a.equal?(b)‎ تعيد true إذا وفقط إذا كان a هو نفسه الكائن b).

يعيد التابع eql?‎ القيمة true إن كان للكائنين obj و other نفس مفتاح النوع Hash (أي hash key). ويُستخدم من قبل Hash لاختبار التساوي بين العناصر. بالنسبة للكائنات التي من الصنف Object، فإنّ eql?‎ مرادف للمعامل ==.

عادة ما تسير الأصناف الفرعية على هذا النهج عبر جعل eql?‎ اسمًا مرادفًا للمعامل == المٌعاد تعريفه، ولكن هناك استثناءات. تجري الأنواع العددية (Numeric)، على سبيل المثال، عمليات تحويل الأنواع عند استخدام ==، ولكن ليس عند استخدام eql?‎.

المعاملات

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 إن كانت الوحدة Module التي تقع على يساره صنفًا فرعيًّا من الوحدة التي تقع على يمينه.
  • المعامل <=>: يجري عملية الموازنة بين كائنين ثم يعيد الناتج الذي يشير إلى العلاقة بينهما.

مصادر