الفرق بين المراجعتين لصفحة: «Kotlin/Any/equals»
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
جميل-بيلوني (نقاش | مساهمات) ط تصحيح شيفرة الأمثلة. |
||
سطر 20: | سطر 20: | ||
تُعرّف الشيفرة الآتية سلستين نصيتين <code>a</code> و <code>b</code> ثم تستدعي الدالة <code>equals()</code> عبر الكائن <code>a</code> لموازنته مع <code>b</code>، ثم تستخدم التعليمة الشرطية <code>if</code> لطباعة النتيجة:<syntaxhighlight lang="kotlin"> | تُعرّف الشيفرة الآتية سلستين نصيتين <code>a</code> و <code>b</code> ثم تستدعي الدالة <code>equals()</code> عبر الكائن <code>a</code> لموازنته مع <code>b</code>، ثم تستخدم التعليمة الشرطية <code>if</code> لطباعة النتيجة:<syntaxhighlight lang="kotlin"> | ||
fun main(args: Array<String>) { | fun main(args: Array<String>) { | ||
var a: String = "hsoub corp" | |||
var b: String = "hsoub " + "corp" | |||
if(a.equals(b)){ | |||
println("'$a' = '$b'") | |||
} else { | |||
println("'$a' != '$b'") | |||
} | |||
} | } | ||
</syntaxhighlight>النتيجة المطبوعة هي:<syntaxhighlight lang="kotlin"> | </syntaxhighlight>النتيجة المطبوعة هي:<syntaxhighlight lang="kotlin"> |
مراجعة 08:17، 5 يوليو 2018
تبين الدالة equals()
إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت عبره. وأيُّ تعريف لاستخدام هذه الدالة يجب أن يكون:
- انعكاسيًا (Reflexive): لكل مرجع
x
لا يساويnull
، يجب أن تُعيد العبارةx.equals(x)
القيمةtrue
. - تماثليًَا (Symmetric): لكل قيمتين مرجعيتين
x
وy
لا تساويانnull
، ستعيد العبارةx.equals (y)
القيمةtrue
إذا وفقط إذا أعادت العبارةy.equals (x)
القيمةtrue
. - تواتريًا (Transitive): لكل القيم المرجعية
x
وy
وz
التي لا تساويnull
، ستعيد العبارةx.equals (z)
القيمةtrue
إن كانت العبارتانx.equals (y)
وy.equals (z)
تعيدان القيمةtrue
أيضًا. - متسقًا (Consistent): لكل قيمتين مرجعيتين
x
وy
لا تساويانnull
، سيعيد استدعاء الدالةx.equals (y)
دائمًا إحدى القيمتينtrue
أوfalse
شريطة عدم تغيير أي معلومة تستخدمها الدالةequals()
لأجل مقارنة الكائنين.
تذكر أنَّ العامل ==
في أكواد Kotlin سيُترجم إلى استدعاءٍ للدالة equals()
عندما يكون كلا الكائنين المُقارَنَين مخالفين للقيمة null
.
البنية العامة
open operator fun equals(other: Any?): Boolean
يُلاحظ وجود الكلمة المفتاحيَّة operator
للدلالة على أنّ هذا التابع مرتبط بمعامل الفهرسة المذكور سابقً، والكلمة open
التي تسمح بتعديل هذه الدالة في الأصناف الوارثة.
القيم المعادة
القيمة المنطقية true
إن كان الكائن المُمرّر للدالة يساوي الكائن الذي استدعيت عبره، أو false
خلاف ذلك.
أمثلة
استخدام الدالة equals()
مع السلاسل النصية
تُعرّف الشيفرة الآتية سلستين نصيتين a
و b
ثم تستدعي الدالة equals()
عبر الكائن a
لموازنته مع b
، ثم تستخدم التعليمة الشرطية if
لطباعة النتيجة:
fun main(args: Array<String>) {
var a: String = "hsoub corp"
var b: String = "hsoub " + "corp"
if(a.equals(b)){
println("'$a' = '$b'")
} else {
println("'$a' != '$b'")
}
}
النتيجة المطبوعة هي:
'hsoub corp' = 'hsoub corp'
انظر أيضًا
- التابع
()hashCode
: يعيد التكويد (hash code) الخاص بالكائن. - التابع
()toString
: يعيد تمثيلًا نصيًا للكائن.