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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>contentDeepEquals()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة <code>contentDeepEquals()‎</code> ا...'
 
لا ملخص تعديل
سطر 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>true</code> إن كانت المصفوفتان المحددتان متساويتان بعُمق، أي أنهما تحتويان على نفس عدد العناصر  ونفس العناصر بنفس الترتيب، وتعيد <code>false</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">
<u>'''الإصدار المطلوب: Kotlin 1.1'''</u>
operator fun <T> Iterable<T>.contains(element: T): Boolean
 
</syntaxhighlight>يمكن استدعاء الدالة <code>contains()‎</code>عبر  القواميس (maps):<syntaxhighlight lang="kotlin">
inline operator fun <K, V> Map<out K, V>.contains(
    key: K
): Boolean
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].


ويُلاحظ وجود الكلمة المفتاحية <code>operator</code> للدلالة على أنّ هذا التابع مرتبط بمعامل الفهرسة المذكور سابقًا.
يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
==القيم المعادة==
==القيم المعادة==
<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>()contains</code> مع المصفوفات ===
تعرف الشيفرة الآتية لائحة باسم <code>list</code> مكونة من خمسة حروف باستخدام الدالة <code>()listOf</code>، ثم تستخدم الدالة <code>()contains</code> للتحقق من أنّ الحرفين <code>'d'</code> و <code>'x'</code> ينتميان إلى اللائحة <code>list</code> ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية مصفوفتين لهما نفس عدد العناصر ونفس العناصر بنفس الترتيب باسم <code>array</code> مكونة من أربعة أعداد  باستخدام الدالة <code>()arrayOf</code>، ثم تستخدم الدالة <code>()contains</code> للتحقق من أنّ الحرفين المصفوفتين متساويتين بعمق ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val list = listOf('a', 'b', 'c', 'd', 'e')
val array = arrayOf(1,2,3,4)
val array2 = arrayOf(1,2,3,4)


println(list.contains('d')) // true
println(array.contentDeepEquals(array2)) // true
println(list.contains('x')) // false
}
}
</syntaxhighlight>
</syntaxhighlight>
سطر 42: سطر 30:
تعرف الشيفرة الآتية قاموسًا باسم <code>map</code> مكونة من  زوجين باستخدام الدالة <code>()hashMapOf</code>، ثم تستخدم الدالة <code>()contains</code> للتحقق من أنّ السلسلتين النصيتين<code>'foo'</code> و <code>'fooo'</code> تنتميان إلى مفاتيح القاموس (keys) ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية قاموسًا باسم <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 array = arrayOf(1,2,3,4)
val array2 = arrayOf(1,2,3,4)


println(map.contains("foo")) // true
println(array.contentDeepEquals(array2)) // true
println(map.contains("fooo")) // false
}
}
</syntaxhighlight>
</syntaxhighlight>

مراجعة 17:56، 12 مايو 2018

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

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

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

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

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

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

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

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

أمثلة

استخدام الدالة ()contains مع المصفوفات

تعرف الشيفرة الآتية مصفوفتين لهما نفس عدد العناصر ونفس العناصر بنفس الترتيب باسم array مكونة من أربعة أعداد باستخدام الدالة ()arrayOf، ثم تستخدم الدالة ()contains للتحقق من أنّ الحرفين المصفوفتين متساويتين بعمق ثم تطبع الناتج:

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

println(array.contentDeepEquals(array2)) // true
}

استخدام الدالة ()contains مع القواميس

تعرف الشيفرة الآتية قاموسًا باسم map مكونة من زوجين باستخدام الدالة ()hashMapOf، ثم تستخدم الدالة ()contains للتحقق من أنّ السلسلتين النصيتين'foo' و 'fooo' تنتميان إلى مفاتيح القاموس (keys) ثم تطبع الناتج:

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

println(array.contentDeepEquals(array2)) // true
}

انظر أيضًا

  • DeepEquals()‎: تتحقق من أن مصفوفتين متساويتان بعمق (deeply equal).

مصادر