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

من موسوعة حسوب
< Kotlin‏ | Any
اذهب إلى التنقل اذهب إلى البحث
ط
 
(6 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة Any.hashCode()‎ في لغة Kotlin}}</noinclude>
+
<noinclude>{{DISPLAYTITLE:الدالة <code>‎‎Any.hashCode()‎</code>‎ في Kotlin}}</noinclude>
يعيد التابع <code>hashCode()</code>‎ قيمة التكويد (hash code) الخاص  بالكائن الذي استُدعي عبره. يحقق التابع <code>hashCode()</code>‎ دائمًا الشرطين التاليين:
+
تعيد الدالة <code>hashCode()</code>‎ الشيفرة Hash الخاصّة بالكائن الذي استُدعي معها. تُحقِّق هذه الدالة الشرطين الآتيين دائمًا:
* سيعيد نفس العدد الصحيح في كل مرة تُستدعى على كائن معين شريطة عدم تغيير أي معلومة تستخدمها الدالة <code>[[kotlin/equals|equals()]]</code>‎ لأجل المقارنة بالكائن.
+
*تعيد نفس العدد الصحيح دائمًا في كل مرة تستدعى فيها مع الكائن نفسه شريطة عدم تغيُّر أيّ معلومة تستخدمها الدالة [[Kotlin/Any/equals|<code>equals()</code>‎]] عند موازنة هذا الكائن مع غيره.
* إذا تساوى كائنان بحسب الدالة <code>[[kotlin/equals|equals()]]</code>‎، فينبغي أن ينتج استدعاء التابع <code>hashCode()</code>‎ على كلٍّ من الكائنين نفس العدد الصحيح.
+
*إذا تساوى كائنان بحسب الدالة <code>[[Kotlin/Any/equals|equals()]]</code>‎، فيجب أن تعيد الدالة <code>hashCode()</code>‎ شيفرة hash نفسها لكلٍّ منها.
 
+
==البنية العامة==
== البنية العامة ==
 
 
<syntaxhighlight lang="kotlin">
 
<syntaxhighlight lang="kotlin">
 
open fun hashCode(): Int
 
open fun hashCode(): Int
</syntaxhighlight>يلاحظ استخدام الكلمة <code>open</code> التي تسمح بتعديل هذه الدالة في الأصناف الوارثة.
+
</syntaxhighlight>وجود الكلمة المفتاحيّة <code>open</code> هنا يدل على السماح بإعادة تعريف (override) هذه الدالة في الأصناف الفرعيّة (subclasses) للصنف <code>[[Kotlin/Enum|Enum]]</code> (راجع [[Kotlin/classes|الأصناف والوراثة]] لمزيد من التفاصيل).
 
+
==القيم المعادة==
== القيم المعادة ==
+
تعاد قيمةٌ [[Kotlin/Int|عددية صحيحةٌ]] تمثِّل الشيفرة hash للكائن المعطى.
قيمة من النوع <code>Int</code> (عدد صحيح) تمثل تكويد الكائن (hash code).
+
==أمثلة==
 
+
تعرِّف الشيفرة الآتية متغيِّرًا من نوع السلاسل النصيّة (String) ثم تستدعي الدالة <code>hashCode()‎</code> للحصول على الشيفرة hash الخاصّة بتلك السلسة النصيّة وطباعتها، ثم تُعرّف متغيّرًا <code>x</code> وتستدعي الدالة كذلك للحصول على الشيفرة hash له وطباعتها، كما يلي:<syntaxhighlight lang="kotlin">
== أمثلة ==
 
 
 
=== استخدام الدالة <code>hashCode()‎</code> ===
 
تعرف الشيفرة التالية متغيرًا من نوع السلاسل النصية (<code>String</code>) ثم تستخدم التابع <code>hashCode()‎</code> لاستخراج تكويد تلك السلسة النصية وطباعتها، ثم تُعرّف عددًا x وتفعل معه نفس الشيء:<syntaxhighlight lang="kotlin">
 
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
 
   var a: String = "hsoub"
 
   var a: String = "hsoub"
   var hach_a = a.hashCode()
+
   var hash_a = a.hashCode()
   println(" $hach_a") // 99582545
+
   println(" $hash_a") // 99582545
  
 
   var x = 54
 
   var x = 54
   var hach_x = x.hashCode()
+
   var hash_x = x.hashCode()
   println(" $hach_x")  //54
+
   println(" $hash_x")  //54
  
 
}
 
}
 
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 
+
==انظر أيضًا==
== انظر أيضًا ==
+
*الدالة <code>[[Kotlin/Any/equals|equals()]]</code>: تتحقق فيما إذا كان هناك كائنٌ (object) آخر مساوٍ للكائن الحاليّ.
* <code>[[kotlin/equals|equals()]]</code>: تبين ما إذا كان الكائن الذي استدعاها يساوي كائنًا آخر.
+
==مصادر==
 
+
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/hash-code.html صفحة الدالة Any.hashCode()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
== مصادر ==
 
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/hash-code.html صفحة التابع hashCode()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Methods]]
+
[[تصنيف:Kotlin Function]]
 +
[[تصنيف:Kotlin Any]]

المراجعة الحالية بتاريخ 05:11، 8 سبتمبر 2018

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

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

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

open fun hashCode(): Int

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

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

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

أمثلة

تعرِّف الشيفرة الآتية متغيِّرًا من نوع السلاسل النصيّة (String) ثم تستدعي الدالة hashCode()‎ للحصول على الشيفرة hash الخاصّة بتلك السلسة النصيّة وطباعتها، ثم تُعرّف متغيّرًا x وتستدعي الدالة كذلك للحصول على الشيفرة hash له وطباعتها، كما يلي:

fun main(args: Array<String>) {
   var a: String = "hsoub"
   var hash_a = a.hashCode()
   println(" $hash_a") // 99582545

   var x = 54
   var hash_x = x.hashCode()
   println(" $hash_x")  //54

}

انظر أيضًا

  • الدالة equals(): تتحقق فيما إذا كان هناك كائنٌ (object) آخر مساوٍ للكائن الحاليّ.

مصادر