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

من موسوعة حسوب
< Kotlin‏ | Enum
اذهب إلى التنقل اذهب إلى البحث
سطر 13: سطر 13:
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
 
     val x = ColorEnum.Red
 
     val x = ColorEnum.Red
   
+
 
 
     print(x.hashCode()) // 523429237
 
     print(x.hashCode()) // 523429237
 
}
 
}
  
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)
}
+
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
==انظر أيضًا==
 
==انظر أيضًا==
 
*الدالة [[Kotlin/Enum/equals|<code>equals()</code>‎]]: تتحقق إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعي معها.
 
*الدالة [[Kotlin/Enum/equals|<code>equals()</code>‎]]: تتحقق إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعي معها.

مراجعة 03:06، 25 أغسطس 2018

تعيد الدالة hashCode()‎ الشيفرة Hash الخاصّة بالكائن الذي استُدعي معها. تُحقِّق هذه الدالة الشرطين الآتيين دائمًا:

  • تعيد نفس العدد الصحيح دائمًا في كل مرة تستدعى فيها مع الكائن نفسه شريطة عدم تغيُّر أيّ معلومة تستخدمها الدالة equals() عند موازنة هذا الكائن مع غيره.
  • إذا تساوى كائنان بحسب الدالة equals()‎، فيجب أن تعيد الدالة hashCode()‎ شيفرة hash نفسها لكلٍّ منها.

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

open fun hashCode(): Int

وجود الكلمة المفتاحيّة open هنا يدل على السماح بإعادة تعريف (override) هذا التابع في الأصناف الفرعيّة (subclasses) للصنف Enum (راجع الأصناف والوراثة لمزيد من التفاصيل).

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

تعاد قيمةٌ عددية صحيحةٌ تمثِّل الشيفرة hash للكائن المعطى.

أمثلة

استعمال الدالة hashCode()‎ مع أحد ثوابت الصنف Enum بعد إنشاء نسخة منه:

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

انظر أيضًا

  • الدالة equals(): تتحقق إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعي معها.
  • الدالة toString(): تحول الكائن الذي استُدعي معها إلى سلسلة نصية (String). 

مصادر