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

من موسوعة حسوب
< Kotlin‏ | Enum
اذهب إلى التنقل اذهب إلى البحث
(مراجعة وتدقيق.)
سطر 1: سطر 1:
يعيد التابع <code>hashCode()</code>‎ قيمة الشيفرة hash code الخاصّة بالكائن الذي استُدعي عبره، ويحقِّق التابع <code>hashCode()</code>‎ دائمًا الشرطين الآتيين:
+
<noinclude>{{DISPLAYTITLE:الدالة <code>Enum.hashCode()</code> في Kotlin}}</noinclude>
*سيعيد نفس العدد الصحيح دائمًا في كل مرة يُستدعى على كائنٍ مُعيَّن شريطة عدم تغيُّر أيّ معلومة يستخدمها [[Kotlin/Any/equals|التابع<code>equals()</code>‎]] لأجل المقارنة مع الكائن.
+
تعيد الدالة <code>hashCode()</code>‎ الشيفرة Hash الخاصّة بالكائن الذي استُدعي معها. تُحقِّق هذه الدالة الشرطين الآتيين دائمًا:
*إذا تساوى كائنان بحسب التابع <code>[[Kotlin/Any/equals|equals()]]</code>‎، فسينتج نفس العدد الصحيح (المُعبِّر عن الشيفرة hash code) عند استدعاء التابع <code>hashCode()</code>‎ على أيٍّ منهما.
+
*تعيد نفس العدد الصحيح دائمًا في كل مرة تستدعى فيها مع الكائن نفسه شريطة عدم تغيُّر أيّ معلومة تستخدمها الدالة [[Kotlin/Enum/equals|<code>equals()</code>‎]] عند موازنة هذا الكائن مع غيره.
 +
*إذا تساوى كائنان بحسب الدالة <code>[[Kotlin/Enum/equals|equals()]]</code>‎، فيجب أن تعيد الدالة <code>hashCode()</code>‎ شيفرة hash نفسها لكلٍّ منها.
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="kotlin">
 
<syntaxhighlight lang="kotlin">
 
open fun hashCode(): Int
 
open fun hashCode(): Int
</syntaxhighlight>يُلاحظ وجود الكلمة المفتاحيّة open هنا وذلك للسماح بإعادة تعريف (override) هذا التابع في الأصناف الفرعيّة (subclasses) للصنف Any (راجع [[Kotlin/classes|الأصناف والوراثة]] لمزيد من التفاصيل).
+
</syntaxhighlight>وجود الكلمة المفتاحيّة <code>open</code> هنا يدل على السماح بإعادة تعريف (override) هذا التابع في الأصناف الفرعيّة (subclasses) للصنف <code>[[Kotlin/Enum|Enum]]</code> (راجع [[Kotlin/classes|الأصناف والوراثة]] لمزيد من التفاصيل).
 
==القيم المعادة==
 
==القيم المعادة==
قيمةٌ صحيحةٌ من النوع <code>Int</code> تمثِّل الشيفرة hash code للكائن.
+
تعاد قيمةٌ [[Kotlin/Int|عددية صحيحةٌ]] تمثِّل الشيفرة hash للكائن المعطى.
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>hashCode()</code>===
+
استعمال الدالة <code>hashCode()</code>‎ مع أحد ثوابت الصنف <code>[[Kotlin/Enum|Enum]]</code> بعد إنشاء نسخة منه:<syntaxhighlight lang="kotlin">
في الشيفرة الآتية ننشئ صنفًا من النوع <code>Enum</code> باسم <code>ColorEnum</code> مكونًا من أربعة مركّبات <code>RED</code> و <code>BLUE</code> و <code>GREEN</code> و <code>ORANGE</code>، ثم ننشئ متغيرا <code>x</code>  يحتوي القيمة <code>RED</code>، ثم نستدعي الدالة <code>hashCode()</code>‎عبر <code>x</code>، ثم نطبع الناتج:<syntaxhighlight lang="kotlin">
 
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
 
     val x = ColorEnum.Red
 
     val x = ColorEnum.Red
سطر 18: سطر 18:
  
 
enum class ColorEnum(val colorCode: Int)  
 
enum class ColorEnum(val colorCode: Int)  
{
 
    Red(2),
 
    Blue(11212),
 
    Green(21212),
 
    Orange(212121)
 
}
 
enum class ColorEnum2(val colorCode: Int)
 
 
{
 
{
 
     Red(2),
 
     Red(2),
سطر 33: سطر 26:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
==انظر أيضًا==
 
==انظر أيضًا==
* الخاصيّة <code>[[Kotlin/Enum/ordinal|ordinal]]</code>: تعيد ترتيب مُركّبة الكائن <code>enum</code> الذي استُدعيت عبره، أي ترتيبها في تصريح الكائن <code>enum،</code> بحيث تأخذ المُركّبة الأولى العدد <code>0</code>.
+
*الدالة [[Kotlin/Enum/equals|<code>equals()</code>‎]]: تتحقق إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعي معها.
*  الخاصيّة <code>[[Kotlin/Enum/name|name]]</code>:تعيد اسم مُركّبة الكائن <code>enum</code> الذي استُدعيت عبره، كما سُمّيت أُثناء تعريف ذلك الكائن
+
*الدالة [[Kotlin/Enum/toString|<code>toString()</code>‎]]: تحول الكائن الذي استُدعي معها إلى [[Kotlin/String|سلسلة نصية]] (String). 
*   <code>[[Kotlin/Enum/equals|equals()]]</code>‎: تبين الدالة <code>equals()</code>‎ إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت عبره. وأيُّ تعريف لاستخدام هذه الدالة يجب أن يكون:
 
 
*
 
*
 
 
==مصادر==
 
==مصادر==
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-enum/hash-code.html صفحة التابع Enum.hashCode()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
+
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-enum/hash-code.html صفحة الدالة Enum.hashCode()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin Method]]
 
[[تصنيف:Kotlin Method]]

مراجعة 11:24، 16 أغسطس 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). 

مصادر