الفرق بين المراجعتين ل"Kotlin/Enum/equals"

من موسوعة حسوب
< Kotlin‏ | Enum
اذهب إلى التنقل اذهب إلى البحث
(مراجعة وتدقيق.)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع Enum.equals()‎ في لغة Kotlin}}</noinclude>
+
<noinclude>{{DISPLAYTITLE:الدالة <code>Enum.equals()‎</code> في Kotlin}}</noinclude>
تبين الدالة <code>equals()</code>‎ إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت عبره. وأيُّ تعريف لاستخدام هذه الدالة يجب أن يكون:
+
تتحقق الدالة <code>equals()</code>‎ إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعي معها. استدعاء هذه الدالة يجب أن يكون:
* انعكاسيًا (Reflexive): لكل مرجع <code>x</code> لا يساوي <code>null</code>، يجب أن تُعيد العبارة <code>x.equals(x)‎</code> القيمة <code>true</code>.
+
*انعكاسيًا (Reflexive): لكل مرجع <code>x</code> لا يساوي <code>null</code>، يجب أن يعيد استدعاء <code>x.equals(x)‎</code> القيمة <code>true</code>.
* تماثليًَا (Symmetric): لكل قيمتين مرجعيتين <code>x</code> و <code>y</code> لا تساويان <code>null</code>، ستعيد العبارة <code>x.equals (y)‎</code> القيمة <code>true</code> إذا وفقط إذا أعادت العبارة <code>y.equals (x)‎</code> القيمة <code>true</code>.
+
*تماثليًَا (Symmetric): لكل قيمتين مرجعيتين <code>x</code> و <code>y</code> لا تساويان <code>null</code>، سيعيد الاستدعاء <code>x.equals(y)‎</code> القيمة <code>true</code> إذا، وفقط، إذا أعادت <code>y.equals(x)‎</code> القيمة <code>true</code>.
* تواتريًا (Transitive):  لكل القيم المرجعية <code>x</code> و <code>y</code> و <code>z</code> التي لا تساوي <code>null</code>، ستعيد العبارة  <code>x.equals (z)</code>‎ القيمة  <code>true</code> إن كانت العبارتان <code>x.equals (y)‎</code> و <code>y.equals (z)‎</code> تعيدان القيمة <code>true</code> أيضًا.
+
*تواتريًا (Transitive):  لكل القيم المرجعية <code>x</code> و <code>y</code> و <code>z</code> التي لا تساوي <code>null</code>، سيعيد استدعاء <code>x.equals(z)</code>‎ القيمة  <code>true</code> إن أعادت <code>x.equals(y)‎</code> و <code>y.equals(z)‎</code> كلاهما القيمة <code>true</code>.
* متسقًا (Consistent): لكل قيمتين مرجعيتين <code>x</code> و <code>y</code> لا تساويان <code>null</code>، سيعيد استدعاء الدالة <code>x.equals (y)‎</code> دائمًا إحدى القيمتين <code>true</code> أو <code>false</code> شريطة عدم تغيير أي معلومة تستخدمها الدالة <code>equals()‎</code> لأجل مقارنة الكائنين.
+
*متسقًا (Consistent): لكل قيمتين مرجعيتين <code>x</code> و <code>y</code> لا تساويان <code>null</code>، سيعيد استدعاء الدالة <code>x.equals(y)‎</code> إما القيمة <code>true</code> أو القيمة <code>false</code> دومًا في كل مرة شرط عدم تغيير أي معلومة تستخدمها الدالة <code>equals()‎</code> في موازنة الكائنين.
تذكر أنَّ العامل <code>==</code> في أكواد Kotlin سيُترجم إلى استدعاءٍ للدالة <code>equals()‎‎‎‎</code> عندما يكون كلا الكائنين المُقارَنَين مخالفين للقيمة <code>null</code>.
+
انتبه إلى أنَّ المعامل <code>==</code> في أكواد Kotlin سيُترجم إلى استدعاءٍ للدالة <code>equals()‎‎‎‎</code> عندما يكون كلا الكائنين المراد الموازنة بينهما لا يساويان القيمة <code>null</code>.
 
+
==البنية العامة==
== البنية العامة ==
 
 
<syntaxhighlight lang="kotlin">
 
<syntaxhighlight lang="kotlin">
 
fun equals(other: Any?): Boolean  
 
fun equals(other: Any?): Boolean  
  
 
</syntaxhighlight>
 
</syntaxhighlight>
== القيم المعادة ==
+
==القيم المعادة==
القيمة المنطقية <code>true</code> إن كان الكائن المُمرّر للدالة يساوي الكائن الذي استدعيت عبره، أو <code>false</code> خلاف ذلك.
+
تعاد القيمة <code>true</code> المنطقية إن كان الكائن <code>other</code> المُمرّر يساوي الكائن المعطى، أو القيمة <code>false</code> خلاف ذلك.
 
+
==أمثلة==
== أمثلة ==
+
إنشاء نسختين من الصنف <code>[[Kotlin/Enum|Enum]]</code> واستعمال الدالة <code>equals()</code>‎ للتحقق من تساوي ثابت من النسخة الأولى مع آخر من النسخة الثانية :<syntaxhighlight lang="kotlin">
في الشيفرة الآتية ننشئ صنفين من النوع <code>Enum</code> باسم <code>ColorEnum</code> و <code>ColorEnum2</code> مكونين من أربعة مركّبات  <code>RED</code>  و <code>BLUE</code>  و <code>GREEN</code>  و <code>ORANGE</code>، ثم ننشئ متغيرين <code>x</code> و <code>y</code> يحتويان القيمة <code>RED</code> لكلا  الصنفين، ثم نستدعي الدالة <code>equals()</code>‎عبر <code>x</code> و <code>y</code> ثم نطبع الناتج:<syntaxhighlight lang="kotlin">
 
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
 
     val x = ColorEnum.Red
 
     val x = ColorEnum.Red
سطر 42: سطر 40:
 
  }
 
  }
 
</syntaxhighlight>
 
</syntaxhighlight>
 
+
==انظر أيضًا==
== انظر أيضًا ==
+
*الدالة <code>[[Kotlin/Enum/compareTo|compareTo()‎]]</code> بين الكائن الذي استُدعي معها والكائن المُمرّر إليها ثمَّ تعيد القيمة 0 إن كانا متساويين، أو قيمة سالبة إن كان الكائن الأول (أي الذي استُدعي معها) أصغر من الكائن الثاني، أو قيمة موجبة إن كان الكائن الأول أكبر من الكائن الثاني.
* الخاصيّة <code>[[Kotlin/Enum/ordinal|ordinal]]</code>: تعيد ترتيب مُركّبة الكائن <code>enum</code> الذي استُدعيت عبره، أي ترتيبها في تصريح الكائن <code>enum،</code> بحيث تأخذ المُركّبة الأولى العدد <code>0</code>. 
+
* الخاصيّة <code>[[Kotlin/Enum/name|name]]</code>: تمثل اسم الثابت المعرف في الكائن <code>enum</code> الذي استُدعي معها كما سُمّي أُثناء تعريف هذا الكائن.
* الخاصيّة <code>[[Kotlin/Enum/name|name]]</code>:تعيد اسم مُركّبة الكائن <code>enum</code> الذي استُدعيت عبره، كما سُمّيت أُثناء تعريف ذلك الكائن. 
+
==مصادر==
 
+
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-enum/equals.html صفحة الدالة Enum.equals()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
== مصادر ==
 
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-enum/equals.html صفحة الدالة Enum.equals()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin Method]]
 
[[تصنيف:Kotlin Method]]

مراجعة 11:23، 16 أغسطس 2018

تتحقق الدالة equals()‎ إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعي معها. استدعاء هذه الدالة يجب أن يكون:

  • انعكاسيًا (Reflexive): لكل مرجع x لا يساوي null، يجب أن يعيد استدعاء x.equals(x)‎ القيمة true.
  • تماثليًَا (Symmetric): لكل قيمتين مرجعيتين x و y لا تساويان null، سيعيد الاستدعاء x.equals(y)‎ القيمة true إذا، وفقط، إذا أعادت y.equals(x)‎ القيمة true.
  • تواتريًا (Transitive):  لكل القيم المرجعية x و y و z التي لا تساوي null، سيعيد استدعاء x.equals(z)‎ القيمة true إن أعادت x.equals(y)‎ و y.equals(z)‎ كلاهما القيمة true.
  • متسقًا (Consistent): لكل قيمتين مرجعيتين x و y لا تساويان null، سيعيد استدعاء الدالة x.equals(y)‎ إما القيمة true أو القيمة false دومًا في كل مرة شرط عدم تغيير أي معلومة تستخدمها الدالة equals()‎ في موازنة الكائنين.

انتبه إلى أنَّ المعامل == في أكواد Kotlin سيُترجم إلى استدعاءٍ للدالة equals()‎‎‎‎ عندما يكون كلا الكائنين المراد الموازنة بينهما لا يساويان القيمة null.

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

fun equals(other: Any?): Boolean

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

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

أمثلة

إنشاء نسختين من الصنف Enum واستعمال الدالة equals()‎ للتحقق من تساوي ثابت من النسخة الأولى مع آخر من النسخة الثانية :

fun main(args: Array<String>) {
    val x = ColorEnum.Red
    val y = ColorEnum2.Red
    
    print(x.equals(y)) // false
    print(x.equals(x)) // true

}

enum class ColorEnum(val colorCode: Int) 
{
     Red(2),
     Blue(11212),
     Green(21212),
     Orange(212121)
 }

enum class ColorEnum2(val colorCode: Int) 
{
     Red(2),
     Blue(11212),
     Green(21212),
     Orange(212121)
 }

انظر أيضًا

  • الدالة compareTo()‎ بين الكائن الذي استُدعي معها والكائن المُمرّر إليها ثمَّ تعيد القيمة 0 إن كانا متساويين، أو قيمة سالبة إن كان الكائن الأول (أي الذي استُدعي معها) أصغر من الكائن الثاني، أو قيمة موجبة إن كان الكائن الأول أكبر من الكائن الثاني.
  • الخاصيّة name: تمثل اسم الثابت المعرف في الكائن enum الذي استُدعي معها كما سُمّي أُثناء تعريف هذا الكائن.

مصادر