الفرق بين المراجعتين ل"Kotlin/Enum/equals"
اذهب إلى التنقل
اذهب إلى البحث
سطر 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
الذي استُدعيت عبره، كما سُمّيت أُثناء تعريف ذلك الكائن.