الفرق بين المراجعتين ل"Ruby/Module/3D-3D"
جميل-بيلوني (نقاش | مساهمات) ط (مراجعة وتدقيق.) |
|||
سطر 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 | ||
+ | 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>==</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> نفس مفتاح | + | يعيد التابع <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>eql?</code> اسمًا مرادفًا للمعامل <code>==</code> المٌعاد تعريفه، ولكن هناك استثناءات. تجري الأنواع العددية (Numeric)، على سبيل المثال، عمليات تحويل الأنواع عند استخدام <code>==</code>، ولكن ليس عند استخدام <code>eql?</code>. |
− | |||
− | |||
− | |||
− | |||
==المعاملات== | ==المعاملات== | ||
===<code>obj</code>=== | ===<code>obj</code>=== | ||
− | الطرف الأول | + | الطرف الأول المراد التحقق من تساويه. |
===<code>other</code>=== | ===<code>other</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/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
التي تقع على يساره صنفًا فرعيًّا من الوحدة التي تقع على يمينه.
- المعامل
<=>
: يجري عملية الموازنة بين كائنين ثم يعيد الناتج الذي يشير إلى العلاقة بينهما.