Kotlin/Enum/hashCode
يعيد التابع hashCode()
قيمة الشيفرة hash code الخاصّة بالكائن الذي استُدعي عبره، ويحقِّق التابع hashCode()
دائمًا الشرطين الآتيين:
- سيعيد نفس العدد الصحيح دائمًا في كل مرة يُستدعى على كائنٍ مُعيَّن شريطة عدم تغيُّر أيّ معلومة يستخدمها التابع
equals()
لأجل المقارنة مع الكائن. - إذا تساوى كائنان بحسب التابع
equals()
، فسينتج نفس العدد الصحيح (المُعبِّر عن الشيفرة hash code) عند استدعاء التابعhashCode()
على أيٍّ منهما.
البنية العامة
open fun hashCode(): Int
يُلاحظ وجود الكلمة المفتاحيّة open هنا وذلك للسماح بإعادة تعريف (override) هذا التابع في الأصناف الفرعيّة (subclasses) للصنف Any (راجع الأصناف والوراثة لمزيد من التفاصيل).
القيم المعادة
قيمةٌ صحيحةٌ من النوع Int
تمثِّل الشيفرة hash code للكائن.
أمثلة
استخدام الدالة hashCode()
في الشيفرة الآتية ننشئ صنفًا من النوع Enum
باسم ColorEnum
مكونًا من أربعة مركّبات RED
و BLUE
و GREEN
و ORANGE
، ثم ننشئ متغيرا x
يحتوي القيمة RED
، ثم نستدعي الدالة hashCode()
عبر x
، ثم نطبع الناتج:
fun main(args: Array<String>) {
val x = ColorEnum.Red
print(x.hashCode()) // 523429237
}
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
الذي استُدعيت عبره، كما سُمّيت أُثناء تعريف ذلك الكائن. -
equals()
: تبين الدالةequals()
إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت عبره. وأيُّ تعريف لاستخدام هذه الدالة يجب أن يكون: