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

من موسوعة حسوب
< Kotlin‏ | Any
اذهب إلى التنقل اذهب إلى البحث
(مراجعة أولى)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة Any.hashCode()‎ في لغة Kotlin}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: التابع Any.hashCode()‎ في لغة Kotlin}}</noinclude>
يعيد التابع <code>hashCode()</code>‎ قيمة التكويد (hash code) الخاص  بالكائن الذي استُدعي عبره. يحقق التابع <code>hashCode()</code>‎ دائمًا الشرطين التاليين:
+
يعيد التابع <code>hashCode()</code>‎ قيمة الشيفرة hash code الخاصّة بالكائن الذي استُدعي عبره، ويحقِّق التابع <code>hashCode()</code>‎ دائمًا الشرطين الآتيين:
* سيعيد نفس العدد الصحيح في كل مرة تُستدعى على كائن معين شريطة عدم تغيير أي معلومة تستخدمها الدالة <code>[[kotlin/equals|equals()]]</code>‎ لأجل المقارنة بالكائن.
+
*سيعيد نفس العدد الصحيح دائمًا في كل مرة يُستدعى على كائنٍ مُعيَّن شريطة عدم تغيُّر أيّ معلومة يستخدمها [[Kotlin/Any/equals|التابع<code>equals()</code>‎]] لأجل المقارنة مع الكائن.
* إذا تساوى كائنان بحسب الدالة <code>[[kotlin/equals|equals()]]</code>‎، فينبغي أن ينتج استدعاء التابع <code>hashCode()</code>‎ على كلٍّ من الكائنين نفس العدد الصحيح.
+
*إذا تساوى كائنان بحسب [[Kotlin/Any/equals|التابع <code>equals()</code>‎]]، فسينتج نفس العدد الصحيح (المُعبِّر عن الشيفرة hash code) عند استدعاء التابع <code>hashCode()</code>‎ على أيٍّ منهما.
 
+
==البنية العامة==
== البنية العامة ==
 
 
<syntaxhighlight lang="kotlin">
 
<syntaxhighlight lang="kotlin">
 
open fun hashCode(): Int
 
open fun hashCode(): Int
</syntaxhighlight>يلاحظ استخدام الكلمة <code>open</code> التي تسمح بتعديل هذه الدالة في الأصناف الوارثة.
+
</syntaxhighlight>يُلاحظ وجود الكلمة المفتاحيّة open هنا وذلك للسماح بإعادة تعريف (override) هذا التابع في الأصناف الفرعيّة (subclasses) للصنف Any (راجع [[Kotlin/classes|الأصناف والوراثة]] لمزيد من التفاصيل).
 
+
==القيم المعادة==
== القيم المعادة ==
+
قيمةٌ صحيحةٌ من النوع <code>Int</code> تمثِّل الشيفرة hash code للكائن.
قيمة من النوع <code>Int</code> (عدد صحيح) تمثل تكويد الكائن (hash code).
+
==أمثلة==
 
+
===استخدام الدالة <code>hashCode()‎</code>===
== أمثلة ==
+
تعرِّف الشيفرة الآتية متغيِّرًا من نوع السلاسل النصيّة (<code>String</code>) ثم تستدعي التابع <code>hashCode()‎</code> للحصول على الشيفرة hash code الخاصّة بتلك السلسة النصيّة وطباعتها، ثم تُعرّف متغيّرًا <code>x</code> وتستدعي التابع كذلك للحصول على الشيفرة hash code له وطباعتها، كما يلي:<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>
 
+
==انظر أيضًا==
== انظر أيضًا ==
+
*[[Kotlin/Any/equals|التابع <code>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 Methods]]

مراجعة 01:13، 21 مايو 2018

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

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

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

open fun hashCode(): Int

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

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

قيمةٌ صحيحةٌ من النوع Int تمثِّل الشيفرة hash code للكائن.

أمثلة

استخدام الدالة hashCode()‎

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

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) آخر مساوٍ للكائن الحاليّ.

مصادر