الفرق بين المراجعتين لصفحة: «Kotlin/Any/equals»

من موسوعة حسوب
< Kotlin‏ | Any
طلا ملخص تعديل
طلا ملخص تعديل
 
(2 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>‎‎Any.equals()</code>‎ في Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>‎‎Any.equals()</code>‎ في Kotlin}}</noinclude>
تبين الدالة <code>equals()</code>‎ إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت عبره. وأيُّ تعريف لاستخدام هذه الدالة يجب أن يكون:
تتحقق الدالة <code>equals()</code>‎ إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت معه. وأيُّ تعريف لاستخدام هذه الدالة يجب أن يكون:
* انعكاسيًا (Reflexive): لكل مرجع <code>x</code> لا يساوي <code>null</code>، يجب أن تُعيد العبارة <code>x.equals(x)‎</code> القيمة <code>true</code>.
* انعكاسيًا (Reflexive): لكل مرجع <code>x</code> لا يساوي <code>null</code>، يجب أن تُعيد العبارة <code>x.equals(x)‎</code> القيمة <code>true</code>.
* تماثليًَا (Symmetric): لكل قيمتين مرجعيتين <code>x</code> و <code>y</code> لا تساويان <code>null</code>، ستعيد العبارة <code>x.equals (y)‎</code> القيمة <code>true</code> إذا وفقط إذا أعادت العبارة <code>y.equals (x)‎</code> القيمة <code>true</code>.
* تماثليًَا (Symmetric): لكل قيمتين مرجعيتين <code>x</code> و <code>y</code> لا تساويان <code>null</code>، ستعيد العبارة <code>x.equals (y)‎</code> القيمة <code>true</code> إذا وفقط إذا أعادت العبارة <code>y.equals (x)‎</code> القيمة <code>true</code>.
سطر 10: سطر 10:
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
open operator fun equals(other: Any?): Boolean
open operator fun equals(other: Any?): Boolean
</syntaxhighlight>يُلاحظ وجود الكلمة المفتاحيَّة <code>operator</code> للدلالة على أنّ هذا التابع مرتبط بمعامل الفهرسة المذكور سابقً، والكلمة <code>open</code> التي تسمح بتعديل هذه الدالة في الأصناف الوارثة.
</syntaxhighlight>يُلاحظ وجود الكلمة المفتاحيَّة <code>operator</code> للدلالة على أنّ هذه الدالة مرتبط بمعامل الفهرسة المذكور سابقً، والكلمة <code>open</code> التي تسمح بتعديل هذه الدالة في الأصناف الوارثة.
 
== المعاملات ==
 
=== <code>other</code> ===
الكائن المراد التحقق من تساويه مع الكائن المعطى.


== القيم المعادة ==
== القيم المعادة ==
سطر 16: سطر 21:


== أمثلة ==
== أمثلة ==
=== استخدام الدالة <code>equals()‎</code> مع السلاسل النصية ===
تُعرّف الشيفرة الآتية سلستين نصيتين <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>) {
سطر 36: سطر 39:


== انظر أيضًا ==
== انظر أيضًا ==
* التابع <code>[[Kotlin/Any/hashCode|()hashCode]]</code>: يعيد التكويد (hash code) الخاص بالكائن.
* الدالة <code>[[Kotlin/Any/hashCode|()hashCode]]</code>: تعيد التكويد (hash code) الخاص بالكائن.
* التابع <code>[[Kotlin/Any/toString|()toString]]</code>: يعيد تمثيلًا نصيًا للكائن.
* الدالة <code>[[Kotlin/Any/toString|()toString]]</code>: تعيد تمثيلًا نصيًا للكائن.


== مصادر ==
== مصادر ==
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/equals.html صفحة الدالة equals()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/equals.html صفحة الدالة equals()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Method]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Any]]

المراجعة الحالية بتاريخ 06:33، 8 سبتمبر 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 التي تسمح بتعديل هذه الدالة في الأصناف الوارثة.

المعاملات

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: تعيد تمثيلًا نصيًا للكائن.

مصادر