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

من موسوعة حسوب
< Kotlin‏ | Enum
اذهب إلى التنقل اذهب إلى البحث
سطر 14: سطر 14:
 
== القيم المعادة ==
 
== القيم المعادة ==
 
القيمة المنطقية <code>true</code> إن كان الكائن المُمرّر للدالة يساوي الكائن الذي استدعيت عبره، أو <code>false</code> خلاف ذلك.
 
القيمة المنطقية <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">
 +
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)
 +
}
 +
</syntaxhighlight>
  
 
== انظر أيضًا ==
 
== انظر أيضًا ==

مراجعة 19:13، 3 يوليو 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 إن كان الكائن المُمرّر للدالة يساوي الكائن الذي استدعيت عبره، أو false خلاف ذلك.

أمثلة

في الشيفرة الآتية ننشئ صنفين من النوع Enum باسم ColorEnum و ColorEnum2 مكونين من أربعة مركّبات  RED  و BLUE  و GREEN  و ORANGE، ثم ننشئ متغيرين x و y يحتويان القيمة RED لكلا الصنفين، ثم نستدعي الدالة equals()‎عبر x و y ثم نطبع الناتج:

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)
 }

انظر أيضًا

  • الخاصيّة ordinal: تعيد ترتيب مُركّبة الكائن enum الذي استُدعيت عبره، أي ترتيبها في تصريح الكائن enum، بحيث تأخذ المُركّبة الأولى العدد 0
  • الخاصيّة name:تعيد اسم مُركّبة الكائن enum الذي استُدعيت عبره، كما سُمّيت أُثناء تعريف ذلك الكائن. 

مصادر