الدالة Any.equals() في Kotlin
تتحقق الدالة 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 التي تسمح بتعديل هذه الدالة في الأصناف الوارثة.
المعاملات
other
الكائن المراد التحقق من تساويه مع الكائن المعطى.
القيم المعادة
القيمة المنطقية true إن كان الكائن المُمرّر للدالة يساوي الكائن الذي استدعيت عبره، أو false خلاف ذلك.
أمثلة
تُعرّف الشيفرة الآتية سلستين نصيتين 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: تعيد تمثيلًا نصيًا للكائن.