الفرق بين المراجعتين لصفحة: «Kotlin/Enum/equals»

من موسوعة حسوب
< Kotlin‏ | Enum
لا ملخص تعديل
طلا ملخص تعديل
 
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 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>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">
 
=== <code>other</code> ===
الكائن الآخر المراد التحقق من تساويه مع الكائن المعطى.
 
==القيم المعادة==
تعاد القيمة <code>true</code> المنطقية إن كان الكائن <code>other</code> المُمرّر يساوي الكائن المعطى، أو القيمة <code>false</code> خلاف ذلك.
==أمثلة==
إنشاء نسختين من الصنف <code>[[Kotlin/Enum|Enum]]</code> واستعمال الدالة <code>equals()</code>‎ للتحقق من تساوي ثابت من النسخة الأولى مع آخر من النسخة الثانية :<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
     val x = ColorEnum.Red
     val x = ColorEnum.Red
     val y = ColorEnum2.Red
     val y = ColorEnum2.Red
   
 
     print(x.equals(y)) // false
     print(x.equals(y)) // false
     print(x.equals(x)) // true
     print(x.equals(x)) // true
سطر 26: سطر 30:
}
}


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


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


== انظر أيضًا ==
==انظر أيضًا==
* الخاصيّة <code>[[Kotlin/Enum/ordinal|ordinal]]</code>: تعيد ترتيب مُركّبة الكائن <code>enum</code> الذي استُدعيت عبره، أي ترتيبها في تصريح الكائن <code>enum،</code> بحيث تأخذ المُركّبة الأولى العدد <code>0</code>. 
*الدالة <code>[[Kotlin/Enum/compareTo|compareTo()‎]]</code> بين الكائن الذي استُدعي معها والكائن المُمرّر إليها ثمَّ تعيد القيمة 0 إن كانا متساويين، أو قيمة سالبة إن كان الكائن الأول (أي الذي استُدعي معها) أصغر من الكائن الثاني، أو قيمة موجبة إن كان الكائن الأول أكبر من الكائن الثاني.
* الخاصيّة <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 Function]]
[[تصنيف:Kotlin Enum]]

المراجعة الحالية بتاريخ 12:37، 9 سبتمبر 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

المعاملات

other

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

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

تعاد القيمة 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 الذي استُدعي معها كما سُمّي أُثناء تعريف هذا الكائن.

مصادر