الفرق بين المراجعتين لصفحة: «Ruby/Module/3D-3D»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>==</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف:...' |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: | <noinclude>{{DISPLAYTITLE: المعامل <code>==</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Module]] | [[تصنيف: Ruby Module Class]] | ||
معامل التساوي | يتحقق معامل التساوي <code>==</code> من تساوي كائنين. | ||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">obj == other → true or false | <syntaxhighlight lang="ruby">obj == other → true or false | ||
equal?(other)→ true or false | equal?(other)→ true or false | ||
eql?(other) → true or false</syntaxhighlight> | 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>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> المٌعاد تعريفه، ولكن هناك استثناءات. تجري الأنواع العددية (Numeric)، على سبيل المثال، عمليات تحويل الأنواع عند استخدام <code>==</code>، ولكن ليس عند استخدام <code>eql?</code>. | |||
==المعاملات== | ==المعاملات== | ||
===<code>obj</code>=== | |||
الطرف الأول المراد التحقق من تساويه. | |||
===<code>other</code>=== | ===<code>other</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/3D-3D-3D|===]]</code>: يعيد القيمة <code>true</code> إن كان الوسيط <code>obj</code> نسخة (instance ) من الوسيط <code>mod</code> أو من أحد الأصناف المنحدرة منه. | ||
* | |||
* المعامل <code>[[Ruby/Module/3C|>]]</code>: يعيد القيمة <code>true</code> إن كانت الوحدة [[Ruby/Module|<code>Module</code>]] التي تقع على يساره صنفًا فرعيًّا من الوحدة التي تقع على يمينه. | |||
*المعامل <code>[[Ruby/Module/3C-3D-3E|<=>]]</code>: يجري عملية الموازنة بين كائنين ثم يعيد الناتج الذي يشير إلى العلاقة بينهما. | |||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-3D-3D قسم | *[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
التي تقع على يساره صنفًا فرعيًّا من الوحدة التي تقع على يمينه.
- المعامل
<=>
: يجري عملية الموازنة بين كائنين ثم يعيد الناتج الذي يشير إلى العلاقة بينهما.