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

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

مصادر