الفرق بين المراجعتين ل"Ruby/BasicObject/equal"

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

مراجعة 08:01، 4 أكتوبر 2018

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

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

يعمل التابع eql?‎ على التحقق إذا كان الكائن الذي استُدعي معه والكائن الذي مُرّر إليه هما نفس الكائن أو يشيران إلى نفس مفتاح الخريطة (hash key). ويُستخدم هذا التابع من قِبل كائنات الصنف Hash للتحقق من تساوي العناصر. بالنسبة لكائنات الصنف Object، يكون استعمال التابع eql?‎ مماثلًا لاستعمال المعامل ==.

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

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

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

obj == other  true or false

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

تعاد القيمة true إن كان الكائن obj مساويًّا للكائن other، أو القيمة false خلاف ذلك.

أمثلة

مثال على استخدام المعامل ‎==‎:

obj = "a"
other = obj.dup


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

انظر أيضًا

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

مصادر