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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع equal?‎ في الصنف BasicObject في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method تصني...'
 
طلا ملخص تعديل
 
(مراجعتان متوسطتان بواسطة مستخدمين اثنين آخرين غير معروضتين)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع equal?في الصنف BasicObject في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: التابع <code>equal?</code> في الصنف <code>BasicObject</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby ARGF]]
[[تصنيف: Ruby BasicObject]]
يتحقق التابع [[Ruby/BasicObject/equal-3F | <code>equal?</code>]]?‎ إذا كان الكائن الذي استُدعي معه والكائن الذي مُرّر إليه هما نفس الكائن أو يشيران إلى نفس مفتاح الخريطة (<code>hash</code> <code>key</code>).
يتحقق التابع <code>equal?</code>‎ إذا كان الكائن الذي استُدعي معه والكائن الذي مُرّر إليه هما نفس الكائن أو يشيران إلى نفس مفتاح الخريطة (hash key).
عمومًا، يُعاد تعريف هذا التابع في الأصناف السليلة (<code>descendant</code> <code>classes</code>) لتتناسب مع تلك الأصناف. خلافًا للمعامل ==، يجب ألا يُعاد تعريف التابع [[Ruby/BasicObject/equal-3F | <code>equal?</code>]]?‎ من قِبل الأصناف الفرعية، إذ يُستخدم آنذاك لتحديد هوية الكائن (أي يستعمل بالشكل <code>a</code>.[[Ruby/BasicObject/equal-3F | <code>equal?</code>]]?(<code>b</code>)‎ لتحديد إذا وفقط إذا كان الكائن <code>a</code> هو نفسه الكائن <code>b</code> [انظر المثال في الأسفل]).
 
يُستخدم هذا التابع من قِبل كائنات الصنف <code>Hash</code> للتحقق من تساوي العناصر. بالنسبة لكائنات الصنف <code>Object</code>، يكون استعمال التابع <code>eql?</code>?‎ مماثلًا لاستعمال المعامل ==.
عمومًا، يُعاد تعريف هذا التابع في الأصناف السليلة (descendant classes) لتتناسب مع تلك الأصناف. خلافًا للمعامل <code>[[Ruby/BasicObject/equal|==]]</code>، يجب ألا يُعاد تعريف التابع <code>equal?</code> من قِبل الأصناف الفرعية، إذ يُستخدم آنذاك لتحديد هوية الكائن (أي يستعمل بالشكل <code>a.equal?(b)‎</code> لتحديد إذا وفقط إذا كان الكائن <code>a</code> هو نفسه الكائن <code>b</code> [انظر المثال في الأسفل]).
تستمر الأصناف الفرعية بتطبيق هذا الأمر وذلك بجعل التابع <code>eql?</code>?‎ اسمًا بديلًا للمعامل == المُعاد تعريفه (<code>overridden</code>) في تلك الأصناف، ولكن هنالك استثناءات دومًا. يُجرَى للأنواع العددية (<code>Numeric</code> <code>types</code>) مثلًا عمليات تحويل عند موازنتها باستعمال المعامل == فقط، وليس باستعمال التابع ?<code>?eql</code>. إليك المثال التالي الذي يوضح ذلك:
 
1 == 1.0    #=> <code>true</code>
يُستخدم هذا التابع من قِبل كائنات الصنف <code>[[Ruby/Hash|Hash]]</code> للتحقق من تساوي العناصر. بالنسبة لكائنات الصنف <code>Object</code>، يكون استعمال التابع <code>eql?</code> مماثلًا لاستعمال المعامل [[Ruby/BasicObject/equal|<code>==</code>]].
1.<code>eql?</code>? 1.0  #=> <code>false</code>
 
تستمر الأصناف الفرعية بتطبيق هذا الأمر وذلك بجعل التابع <code>eql?</code> اسمًا بديلًا للمعامل [[Ruby/BasicObject/equal|<code>==</code>]] المُعاد تعريفه (overridden) في تلك الأصناف، ولكن هنالك استثناءات دومًا. يُجرَى للأنواع العددية (Numeric types) مثلًا عمليات تحويل عند موازنتها باستعمال المعامل [[Ruby/BasicObject/equal|<code>==</code>]] فقط، وليس باستعمال التابع <code>?eql</code>. إليك المثال التالي الذي يوضح ذلك:<syntaxhighlight lang="ruby">
1 == 1.0    #=> true
1.eql? 1.0  #=> false
</syntaxhighlight>
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby"> equal?(other) → true or false
<syntaxhighlight lang="ruby">equal?(other) → true or false
  </syntaxhighlight>
  </syntaxhighlight>
==المعاملات==
==المعاملات==
<code>other</code>
 
=== <code>other</code> ===
الكائن المراد التحقق من تساويه مع الكائن المعطى.
الكائن المراد التحقق من تساويه مع الكائن المعطى.
==القيم المعادة==
==القيم المعادة==
تعاد القيمة <code>true</code> إن كان الكائن المعطى والكائن <code>other</code> المُمرَّر هما نفس الكائن أو يشيران إلى نفس مفتاح الخريطة (<code>hash</code> <code>key</code>)، أو تعاد القيمة <code>false</code> خلاف ذلك.
تعاد القيمة <code>true</code> إن كان الكائن المعطى والكائن <code>other</code> المُمرَّر هما نفس الكائن أو يشيران إلى نفس مفتاح الخريطة (hash key)، أو تعاد القيمة <code>false</code> خلاف ذلك.
==أمثلة==
==أمثلة==
مثال على استخدام  التابع [[Ruby/BasicObject/equal-3F | <code>equal?</code>]]?‎:
مثال على استخدام  التابع <code>equal?</code>‎:<syntaxhighlight lang="ruby">obj = "a"
<syntaxhighlight lang="ruby"> obj = "a"
other = obj.dup
other = obj.dup


سطر 28: سطر 32:
  </syntaxhighlight>
  </syntaxhighlight>
==انظر أيضًا==
==انظر أيضًا==
* المعامل ==: يتحقق‎ من تساوي كائنين.
*المعامل [[Ruby/BasicObject/equal|<code>==</code>]]: يتحقق‎ من تساوي كائنين.
* المعامل ‎!=‎‎: يتحقق‎ من عدم تساوي كائنين.
*المعامل <code>[[Ruby/BasicObject/!-3D|‎!=]]‎‎</code>: يتحقق‎ من عدم تساوي كائنين.
==مصادر==
==مصادر==
* قسم التابع equal?‎ في الصنف BasicObject في توثيق روبي الرسمي.
*[http://ruby-doc.org/core-2.5.1/BasicObject.html#method-i-equal-3F قسم التابع equal?‎ في الصنف BasicObject في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 08:02، 4 أكتوبر 2018

يتحقق التابع equal?‎ إذا كان الكائن الذي استُدعي معه والكائن الذي مُرّر إليه هما نفس الكائن أو يشيران إلى نفس مفتاح الخريطة (hash key).

عمومًا، يُعاد تعريف هذا التابع في الأصناف السليلة (descendant classes) لتتناسب مع تلك الأصناف. خلافًا للمعامل ==، يجب ألا يُعاد تعريف التابع equal?‎ من قِبل الأصناف الفرعية، إذ يُستخدم آنذاك لتحديد هوية الكائن (أي يستعمل بالشكل a.equal?(b)‎ لتحديد إذا وفقط إذا كان الكائن a هو نفسه الكائن b [انظر المثال في الأسفل]).

يُستخدم هذا التابع من قِبل كائنات الصنف Hash للتحقق من تساوي العناصر. بالنسبة لكائنات الصنف Object، يكون استعمال التابع eql?‎ مماثلًا لاستعمال المعامل ==.

تستمر الأصناف الفرعية بتطبيق هذا الأمر وذلك بجعل التابع eql?‎ اسمًا بديلًا للمعامل == المُعاد تعريفه (overridden) في تلك الأصناف، ولكن هنالك استثناءات دومًا. يُجرَى للأنواع العددية (Numeric types) مثلًا عمليات تحويل عند موازنتها باستعمال المعامل == فقط، وليس باستعمال التابع ?eql. إليك المثال التالي الذي يوضح ذلك:

1 == 1.0     #=> true
1.eql? 1.0   #=> false

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

equal?(other)  true or false

المعاملات

other

الكائن المراد التحقق من تساويه مع الكائن المعطى.

القيم المعادة

تعاد القيمة true إن كان الكائن المعطى والكائن other المُمرَّر هما نفس الكائن أو يشيران إلى نفس مفتاح الخريطة (hash key)، أو تعاد القيمة false خلاف ذلك.

أمثلة

مثال على استخدام التابع equal?‎:

obj = "a"
other = obj.dup


obj == other      #=> true
obj.equal? other  #=> false
obj.equal? obj    #=> true

انظر أيضًا

  • المعامل ==: يتحقق‎ من تساوي كائنين.
  • المعامل ‎!=‎‎: يتحقق‎ من عدم تساوي كائنين.

مصادر