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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>contentDeepEquals()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة <code>contentDeepEquals()‎</code> ا...'
 
طلا ملخص تعديل
 
(10 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>contentDeepEquals()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>contentDeepEquals()‎</code> في Kotlin}}</noinclude>
تعيد الدالة <code>contentDeepEquals()‎</code> القيمة <code>true</code> إن كانت [[kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها تحتوي العنصر الممرّر إليها، وفي حال استُدعيت عبر قاموس فتعيد <code>true</code> إن كان ذلك القاموس يحتوي ذلك العنصر كمفتاح (<code>key</code>)، وتعيد <code>false</code> خلاف ذلك.
تتحقق الدالة <code>contentDeepEquals()‎</code> من تساوي مصفوفتين بالعُمق، أي أنهما تحتويان على نفس العناصر وبنفس الترتيب. 
 
إن تقابل عنصران وكان كلاهما مصفوفتين متشعبتين، فسيُتحقق من تساويهما بالعمق أيضًا بالطريقة ذاتها. وإن كانت إحدى المصفوفتين تحتوي على مرجع لها (تحتوي على نفسها) في أيّ مستوى من مستويات التشعب، فسيكون سلوك الدالة غير محدَّد.


يمكن استدعاء <code>contentDeepEquals()‎</code> عبر قاموس بالصياغة <code>x in map</code> للتحقق من أنّ العنصر <code>x</code> ينتمي إلى القاموس.
==البنية العامة==
==البنية العامة==
يمكن استدعاء الدالة <code>contains()‎</code>عبر  [[kotlin/Array|المصفوفات]] :<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
operator fun <T> Array<out T>.contains(element: T): Boolean
inline infix fun <T> Array<out T>.contentDeepEquals(
operator fun ByteArray.contains(element: Byte): Boolean
    other: Array<out T>
operator fun ShortArray.contains(element: Short): Boolean
): Boolean
operator fun IntArray.contains(element: Int): Boolean
operator fun LongArray.contains(element: Long): Boolean
operator fun FloatArray.contains(element: Float): Boolean
operator fun DoubleArray.contains(element: Double): Boolean
operator fun BooleanArray.contains(element: Boolean): Boolean
operator fun CharArray.contains(element: Char): Boolean
</syntaxhighlight>
</syntaxhighlight>


يمكن استدعاء الدالة <code>contains()‎</code>عبر  [[kotlin/Array|المجموعات]]:<syntaxhighlight lang="kotlin">
'''الإصدار المطلوب: Kotlin 1.1'''
operator fun <T> Iterable<T>.contains(element: T): Boolean


</syntaxhighlight>يمكن استدعاء الدالة <code>contains()‎</code>عبر  القواميس (maps):<syntaxhighlight lang="kotlin">
وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]]).
inline operator fun <K, V> Map<out K, V>.contains(
 
    key: K
== المعاملات ==
): Boolean
 
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
=== <code>other</code> ===
المصفوفة الأخرى المراد التحقق من تساويها بالعمق مع المصفوفة المعطاة.


ويُلاحظ وجود الكلمة المفتاحية <code>operator</code> للدلالة على أنّ هذا التابع مرتبط بمعامل الفهرسة المذكور سابقًا.
==القيم المعادة==
==القيم المعادة==
<code>true</code> إن كانت [[kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت الدالة عبرها تحتوي العنصر الممرّر إليها، وفي حال استُدعيت عبر قاموس فتعيد <code>true</code> إن كان ذلك القاموس يحتوي ذلك العنصر كمفتاح (<code>key</code>). وتعيد <code>false</code> خلاف ذلك.  
تُعاد القيمة المنطقية <code>true</code> إن كانت المصفوفتان المحددتان متساويتان بالعُمق، أي أنَّهما تحتويان على نفس العناصر وبنفس الترتيب، أو القيمة المنطقيَّة <code>false</code> خلاف ذلك.  
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()contains</code> مع اللوائح ===
تعرِّف الشيفرة الآتية مصفوفتين باسم <code>array</code> و <code>array2</code> لهما نفس العناصر وبنفس الترتيب باستخدام الدالة <code>()arrayOf</code>، ثمَّ تستخدم الدالة <code>()contentDeepEquals</code> للتحقق من أنّ لهما العمق ذاته:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية لائحة باسم <code>list</code> مكونة من خمسة حروف باستخدام الدالة <code>()listOf</code>، ثم تستخدم الدالة <code>()contains</code> للتحقق من أنّ الحرفين <code>'d'</code> و <code>'x'</code> ينتميان إلى اللائحة <code>list</code> ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
val list = listOf('a', 'b', 'c', 'd', 'e')
 
println(list.contains('d')) // true
println(list.contains('x')) // false
}
</syntaxhighlight>
 
===استخدام الدالة <code>()contains</code> مع القواميس ===
تعرف الشيفرة الآتية قاموسًا باسم <code>map</code> مكونة من  زوجين باستخدام الدالة <code>()hashMapOf</code>، ثم تستخدم الدالة <code>()contains</code> للتحقق من أنّ السلسلتين النصيتين<code>'foo'</code> و <code>'fooo'</code> تنتميان إلى مفاتيح القاموس (keys) ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val map = hashMapOf("foo" to 1, "bar" to 2)
    val array1 = arrayOf(1, 2, 3, 4)
    val array2 = arrayOf(1, 2, 3, 4)
    val array3 = arrayOf(1, 2, 3, 6)


println(map.contains("foo")) // true
    println(array1.contentDeepEquals(array2)) // true
println(map.contains("fooo")) // false
    println(array1.contentDeepEquals(array3)) // false
}
}
</syntaxhighlight>
</syntaxhighlight>
==انظر أيضًا==
==انظر أيضًا==
*<code>[[Kotlin/collections/contentDeepEquals|DeepEquals()]]</code>‎: تتحقق من أن مصفوفتين متساويتان بعمق (''deeply'' equal).  
*الدالة <code>[[Kotlin/collections/contentEquals|contentEquals()]]</code>‎: تتحقَّق من تساوي <nowiki/>[[Kotlin/Array|مصفوفتين]] بنيويًا (''structurally'' equal)، أي إن كان لهما نفس العناصر وبنفس العدد والترتيب.
*الدالة <code>[[Kotlin/collections/contentDeepToString|contentDeepToString()]]</code>‎: تعيد سلسلة نصية تمثِّل محتوى <nowiki/>[[Kotlin/Array|المصفوفة]] التي استُدعيت معها كما لو كانت قائمة.
* الدالة <code>[[Kotlin/collections/contentDeepHashCode|contentDeepHashCode()]]</code>‎: تعيد شيفرة hash لمحتوى <nowiki/>[[Kotlin/Array|المصفوفة]] التي استدعيت معها كما لو كانت قائمة.
*الدالة <code>[[Kotlin/collections/contains|contains()‎]]</code>: تتحقق إن كانت <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي استُدعيت معها تحتوي على العنصر الممرّر إليها، أو إن كانت الخريطة التي استدعيت معها تحتوي على ذلك العنصر كمفتاح (key).  


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

المراجعة الحالية بتاريخ 07:27، 8 سبتمبر 2018

تتحقق الدالة contentDeepEquals()‎ من تساوي مصفوفتين بالعُمق، أي أنهما تحتويان على نفس العناصر وبنفس الترتيب.

إن تقابل عنصران وكان كلاهما مصفوفتين متشعبتين، فسيُتحقق من تساويهما بالعمق أيضًا بالطريقة ذاتها. وإن كانت إحدى المصفوفتين تحتوي على مرجع لها (تحتوي على نفسها) في أيّ مستوى من مستويات التشعب، فسيكون سلوك الدالة غير محدَّد.

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

inline infix fun <T> Array<out T>.contentDeepEquals(
    other: Array<out T>
): Boolean

الإصدار المطلوب: Kotlin 1.1

وجود الكلمة المفتاحية inline يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل راجع توثيق الدوال المباشرة (inline functions)).

المعاملات

other

المصفوفة الأخرى المراد التحقق من تساويها بالعمق مع المصفوفة المعطاة.

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

تُعاد القيمة المنطقية true إن كانت المصفوفتان المحددتان متساويتان بالعُمق، أي أنَّهما تحتويان على نفس العناصر وبنفس الترتيب، أو القيمة المنطقيَّة false خلاف ذلك.

أمثلة

تعرِّف الشيفرة الآتية مصفوفتين باسم array و array2 لهما نفس العناصر وبنفس الترتيب باستخدام الدالة ()arrayOf، ثمَّ تستخدم الدالة ()contentDeepEquals للتحقق من أنّ لهما العمق ذاته:

fun main(args: Array<String>) {
    val array1 = arrayOf(1, 2, 3, 4)
    val array2 = arrayOf(1, 2, 3, 4)
    val array3 = arrayOf(1, 2, 3, 6)

    println(array1.contentDeepEquals(array2)) // true
    println(array1.contentDeepEquals(array3)) // false
}

انظر أيضًا

  • الدالة contentEquals()‎: تتحقَّق من تساوي مصفوفتين بنيويًا (structurally equal)، أي إن كان لهما نفس العناصر وبنفس العدد والترتيب.
  • الدالة contentDeepToString()‎: تعيد سلسلة نصية تمثِّل محتوى المصفوفة التي استُدعيت معها كما لو كانت قائمة.
  • الدالة contentDeepHashCode()‎: تعيد شيفرة hash لمحتوى المصفوفة التي استدعيت معها كما لو كانت قائمة.
  • الدالة contains()‎: تتحقق إن كانت المصفوفة أو المجموعة التي استُدعيت معها تحتوي على العنصر الممرّر إليها، أو إن كانت الخريطة التي استدعيت معها تحتوي على ذلك العنصر كمفتاح (key).

مصادر