الفرق بين المراجعتين لصفحة: «Ruby/Module/3D-3D»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>==</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف:...' |
لا ملخص تعديل |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Module]] | [[تصنيف: Ruby Module]] | ||
معامل التساوي - | معامل التساوي - على مستوى الصنف <code>[[Ruby/Object|Object]]</code> ، يعيد المعامل <code>==</code> القيمة <code>true</code> فقط إن كان <code>obj</code> و <code>other</code> (انظر فقرة البنية العامة) نفس الكائن. بشكل عام، يٌعاد تعريف هذا التابع في الأصناف المنحدرة (descendant classes) لتخصيصه للصنف المُستخدم. | ||
يعيد التابع <code>eql?</code> القيمة <code>true</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/ | *التابع <code>[[Ruby/Module/3D-3D-3D|===]]</code>: يعيد القيمة <code>true</code> إن كان الوسيط <code>obj</code> نسخة (instance ) من الوسيط <code>mod</code> أو من أحد الأصناف المنحدرة منه. | ||
* التابع <code>[[Ruby/Module/ | |||
* التابع <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
إن لم تكن بينهما أي علاقة.
- التابع
<=>
: يجري عملية المقارنة.
- التابع
==
: معامل التساوي