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

من موسوعة حسوب
< Kotlin‏ | Any
اذهب إلى التنقل اذهب إلى البحث
(مراجعة أولى)
ط
 
(5 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 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 الخاصّة بالكائن الذي استُدعي معها. تُحقِّق هذه الدالة الشرطين الآتيين دائمًا:
*سيعيد نفس العدد الصحيح دائمًا في كل مرة يُستدعى على كائنٍ مُعيَّن شريطة عدم تغيُّر أيّ معلومة يستخدمها [[Kotlin/Any/equals|التابع<code>equals()</code>‎]] لأجل المقارنة مع الكائن.
+
*تعيد نفس العدد الصحيح دائمًا في كل مرة تستدعى فيها مع الكائن نفسه شريطة عدم تغيُّر أيّ معلومة تستخدمها الدالة [[Kotlin/Any/equals|<code>equals()</code>‎]] عند موازنة هذا الكائن مع غيره.
*إذا تساوى كائنان بحسب [[Kotlin/Any/equals|التابع <code>equals()</code>‎]]، فسينتج نفس العدد الصحيح (المُعبِّر عن الشيفرة hash 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>يُلاحظ وجود الكلمة المفتاحيّة 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>===
+
تعرِّف الشيفرة الآتية متغيِّرًا من نوع السلاسل النصيّة (String) ثم تستدعي الدالة <code>hashCode()‎</code> للحصول على الشيفرة hash الخاصّة بتلك السلسة النصيّة وطباعتها، ثم تُعرّف متغيّرًا <code>x</code> وتستدعي الدالة كذلك للحصول على الشيفرة hash له وطباعتها، كما يلي:<syntaxhighlight lang="kotlin">
تعرِّف الشيفرة الآتية متغيِّرًا من نوع السلاسل النصيّة (<code>String</code>) ثم تستدعي التابع <code>hashCode()‎</code> للحصول على الشيفرة hash code الخاصّة بتلك السلسة النصيّة وطباعتها، ثم تُعرّف متغيّرًا <code>x</code> وتستدعي التابع كذلك للحصول على الشيفرة hash code له وطباعتها، كما يلي:<syntaxhighlight lang="kotlin">
 
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
 
   var a: String = "hsoub"
 
   var a: String = "hsoub"
سطر 24: سطر 23:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
==انظر أيضًا==
 
==انظر أيضًا==
*[[Kotlin/Any/equals|التابع <code>equals()‎</code>]]: يبيّن فيما إذا كان هناك كائنٌ (object) آخر مساوٍ للكائن الحاليّ.
+
*الدالة <code>[[Kotlin/Any/equals|equals()]]‎</code>: تتحقق فيما إذا كان هناك كائنٌ (object) آخر مساوٍ للكائن الحاليّ.
 
==مصادر==
 
==مصادر==
*[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 صفحة الدالة Any.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) آخر مساوٍ للكائن الحاليّ.

مصادر