الفرق بين المراجعتين لصفحة: «Kotlin/Enum/hashCode»

من موسوعة حسوب
< Kotlin‏ | Enum
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع Enum.hashCode()‎ في لغة Kotlin}}</noinclude> يعيد التابع <code>hashCode()</code>‎ قيمة الشيفرة hash...'
 
لا ملخص تعديل
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع Enum.hashCode()‎ في لغة Kotlin}}</noinclude>
يعيد التابع <code>hashCode()</code>‎ قيمة الشيفرة hash code الخاصّة بالكائن الذي استُدعي عبره، ويحقِّق التابع <code>hashCode()</code>‎ دائمًا الشرطين الآتيين:
يعيد التابع <code>hashCode()</code>‎ قيمة الشيفرة hash code الخاصّة بالكائن الذي استُدعي عبره، ويحقِّق التابع <code>hashCode()</code>‎ دائمًا الشرطين الآتيين:
*سيعيد نفس العدد الصحيح دائمًا في كل مرة يُستدعى على كائنٍ مُعيَّن شريطة عدم تغيُّر أيّ معلومة يستخدمها [[Kotlin/Any/equals|التابع<code>equals()</code>‎]] لأجل المقارنة مع الكائن.
*سيعيد نفس العدد الصحيح دائمًا في كل مرة يُستدعى على كائنٍ مُعيَّن شريطة عدم تغيُّر أيّ معلومة يستخدمها [[Kotlin/Any/equals|التابع<code>equals()</code>‎]] لأجل المقارنة مع الكائن.
سطر 11: سطر 10:
==أمثلة==
==أمثلة==
===استخدام الدالة <code>hashCode()‎</code>===
===استخدام الدالة <code>hashCode()‎</code>===
تعرِّف الشيفرة الآتية متغيِّرًا من نوع السلاسل النصيّة (<code>String</code>) ثم تستدعي التابع <code>hashCode()</code> للحصول على الشيفرة hash code الخاصّة بتلك السلسة النصيّة وطباعتها، ثم تُعرّف متغيّرًا <code>x</code> وتستدعي التابع كذلك للحصول على الشيفرة hash 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>) {
   var a: String = "hsoub"
    val x = ColorEnum.Red
   var hash_a = a.hashCode()
   
   println(" $hash_a") // 99582545
    print(x.hashCode()) // 523429237
 
}
   var x = 54
   var hash_x = x.hashCode()
   println(" $hash_x")  //54


}
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>
</syntaxhighlight>
==انظر أيضًا==
==انظر أيضًا==
*التابع [[Kotlin/Any/equals|<code>equals()</code>]]<code></code>: يبيّن فيما إذا كان هناك كائنٌ (object) آخر مساوٍ للكائن الحاليّ.
* الخاصيّة <code>[[Kotlin/Enum/ordinal|ordinal]]</code>: تعيد ترتيب مُركّبة الكائن <code>enum</code> الذي استُدعيت عبره، أي ترتيبها في تصريح الكائن <code>enum،</code> بحيث تأخذ المُركّبة الأولى العدد <code>0</code>.
*  الخاصيّة <code>[[Kotlin/Enum/name|name]]</code>:تعيد اسم مُركّبة الكائن <code>enum</code> الذي استُدعيت عبره، كما سُمّيت أُثناء تعريف ذلك الكائن. 
*   <code>[[Kotlin/Enum/equals|equals()]]</code>‎: تبين الدالة <code>equals()</code>إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت عبره. وأيُّ تعريف لاستخدام هذه الدالة يجب أن يكون:
*
 
==مصادر==
==مصادر==
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/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]]

مراجعة 19:19، 3 يوليو 2018

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

مصادر