الفرق بين المراجعتين لصفحة: «Kotlin/Any/equals»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع Any.equals() في لغة Kotlin}}</noinclude> تبين الدالة equals() إذا ما كان الكائن المُمرّ...' |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: التابع Any.equals() في لغة Kotlin}}</noinclude> | <noinclude>{{DISPLAYTITLE: التابع Any.equals() في لغة Kotlin}}</noinclude> | ||
تبين الدالة equals() إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت عبره. وأيُّ تعريف لاستخدام (Implementations) هذه الدالة يجب أن يكون: | تبين الدالة <code>equals()</code> إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت عبره. وأيُّ تعريف لاستخدام (Implementations) هذه الدالة يجب أن يكون: | ||
* انعكاسيًا (Reflexive): لكل مرجع x لا يساوي | * انعكاسيًا (Reflexive): لكل مرجع <code>x</code> لا يساوي <code>null</code>، يجب أن تُعيد العبارة <code>x.equals(x)</code> القيمة <code>true</code>. | ||
* تماثليًَا (Symmetric): لكل قيمتين مرجعيتين x و y لا تساويان | * تماثليًَا (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>. | ||
* تواتريًا (Transitive): لكل القيم المرجعية x و y و z التي تخالف | * تواتريًا (Transitive): لكل القيم المرجعية <code>x</code> و <code>y</code> و <code>z</code> التي تخالف <code>null</code>، إن كانت العبارتان <code>x.equals (y)</code> و <code>y.equals (z)</code> تعيدان القيمة <code>true</code> فستعيد العبارة <code>x.equals (z)</code> القيمة <code>true</code> كذلك. | ||
* متسقًا (Consistent): لكل قيمتين مرجعيتين x و y لا تساويان | * متسقًا (Consistent): لكل قيمتين مرجعيتين <code>x</code> و <code>y</code> لا تساويان <code>null</code>، فإنّ استدعاء الدالة <code>x.equals (y)</code> سيُرجع دائمًا إحدى القيمتين <code>true</code> أو <code>false</code>، شريطة عدم تغيير أي معلومة تستخدمها الدالة <code>equals()</code> لأجل مقارنة الكائنين. | ||
تذكر أن العامل == في أكواد Kotlin سيُترجم إلى استدعاءٍ للدالة equals() عندما يكون كلا الكائنين المُقارَنَين مخالفين للقيمة null. | تذكر أن العامل <code>==</code> في أكواد Kotlin سيُترجم إلى استدعاءٍ للدالة <code>equals()</code> عندما يكون كلا الكائنين المُقارَنَين مخالفين للقيمة <code>null</code>. | ||
== البنية العامة == | == البنية العامة == | ||
<syntaxhighlight lang="kotlin"> | |||
open operator fun equals(other: Any?): Boolean | open operator fun equals(other: Any?): Boolean | ||
</syntaxhighlight>ويُلاحظ وجود الكلمة المفتاحية <code>operator</code> للدلالة على أنّ هذا التابع مرتبط بمعامل الفهرسة المذكور سابقًا. وكذلك الكلمة <code>open</code> التي تسمح بتعديل هذه الدالة في الأصناف الوارثة. | |||
ويُلاحظ وجود الكلمة المفتاحية operator للدلالة على أنّ هذا التابع مرتبط بمعامل الفهرسة المذكور سابقًا. وكذلك الكلمة open التي تسمح بتعديل هذه الدالة في الأصناف الوارثة. | |||
== القيم المعادة == | == القيم المعادة == | ||
true إن كان الكائن المُمرّر للدالة يساوي الكائن الذي استدعيت عبره، أو false خلاف ذلك. | <code>true</code> إن كان الكائن المُمرّر للدالة يساوي الكائن الذي استدعيت عبره، أو <code>false</code> خلاف ذلك. | ||
== أمثلة == | == أمثلة == | ||
=== استخدام الدالة equals() مع السلاسل النصية === | === استخدام الدالة <code>equals()</code> مع السلاسل النصية === | ||
تُعرّف الشيفرة الآتية سلستين نصيتين a و b ثم تستدعي الدالة equals() عبر الكائن a لمقارنته مع | تُعرّف الشيفرة الآتية سلستين نصيتين <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 a: String = "hsoub corp" | ||
var b: String = "hsoub " + "corp" | var b: String = "hsoub " + "corp" | ||
if(a.equals(b)){ | if(a.equals(b)){ | ||
println("'$a' = '$b'") | println("'$a' = '$b'") | ||
} else { | |||
println("'$a' != '$b'") | println("'$a' != '$b'") | ||
} | } | ||
} | } | ||
</syntaxhighlight>النتيجة المطبوعة هي:<syntaxhighlight lang="kotlin"> | |||
'hsoub corp' = 'hsoub corp' | 'hsoub corp' = 'hsoub corp' | ||
</syntaxhighlight> | |||
== انظر أيضًا == | == انظر أيضًا == | ||
* ()hashCode: تعيد التكويد (hash code) الخاص بالكائن. | * <code>[[Kotlin/Any/hashCode|()hashCode]]</code>: تعيد التكويد (hash code) الخاص بالكائن. | ||
* ()toString: تعيد تمثيلًا نصيًا للكائن. | * <code>[[Kotlin/Any/toString|()toString]]</code>: تعيد تمثيلًا نصيًا للكائن. | ||
== مصادر == | == مصادر == | ||
* صفحة الدالة equals() في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin. | * [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/equals.html صفحة الدالة equals() في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.] | ||
[[تصنيف:Kotlin]] | [[تصنيف:Kotlin]] | ||
[[تصنيف:Kotlin Method]] | [[تصنيف:Kotlin Method]] |
مراجعة 17:20، 28 يونيو 2018
تبين الدالة equals()
إذا ما كان الكائن المُمرّر إليها يساوي الكائن الذي استدعيت عبره. وأيُّ تعريف لاستخدام (Implementations) هذه الدالة يجب أن يكون:
- انعكاسيًا (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 (y)
وy.equals (z)
تعيدان القيمةtrue
فستعيد العبارةx.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
: تعيد تمثيلًا نصيًا للكائن.