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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>find()‎</code> في لغة Kotlin}}</noinclude> تضيف الدالة<code>find()‎</code> إلى المعامل <code>d...'
 
لا ملخص تعديل
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>find()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>find()‎</code> في لغة Kotlin}}</noinclude>
تضيف الدالة<code>find()‎</code> إلى المعامل <code>destination</code> الممرّر إليها عناصرّ  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها والتي تحقق الشرط المنطقي <code>predicate</code> المُمرّر إليها. من الجدير بالذكر أنّ <code>destination</code> ينبغي أن تكون [[Kotlin/collections|مجموعة]] قابلة للتغيير (<code>MutableCollection</code>).
تعيد الدالة<code>find()‎</code> العنصر الأول من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها والذي يحقق الشرط المنطقي <code>predicate</code> المُمرّر إليها. وإن لم يكن هناك  أي عنصر يحقق ذلك فستعيد <code>null.</code>
 
في حال استدعائها عبر [[Kotlin/collections/Map|قاموس]] فستضيف كل الأزوج التي تحقق الشرط المنطقي <code>predicate()‎</code> إلى [[Kotlin/collections/Map|القاموس]] <code>destination</code> الممرّر إليها. ومن الجدير بالذكر أنّ <code>destination</code> ينبغي أن تكون [[Kotlin/collections/Map|قاموسًا]] قابلا للتغيير (<code>MutableMap</code>).
==البنية العامة==
==البنية العامة==
يمكن استدعاء الدالة<code>filterTo()‎</code> على [[Kotlin/Array|المصفوفات]] أو [[Kotlin/collections|المجموعات]].<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
inline fun <T, C : MutableCollection<in T>> Array<out T>.filterTo(
inline fun <T> Array<out T>.find(
    destination: C,
     predicate: (T) -> Boolean
     predicate: (T) -> Boolean
): C
): T?
inline fun <C : MutableCollection<in Byte>> ByteArray.filterTo(
inline fun ByteArray.find(
    destination: C,
     predicate: (Byte) -> Boolean
     predicate: (Byte) -> Boolean
): C
): Byte?
inline fun <C : MutableCollection<in Short>> ShortArray.filterTo(
inline fun ShortArray.find(
    destination: C,
     predicate: (Short) -> Boolean
     predicate: (Short) -> Boolean
): C
): Short?
inline fun <C : MutableCollection<in Int>> IntArray.filterTo(
inline fun IntArray.find(predicate: (Int) -> Boolean): Int? (source)
    destination: C,
inline fun LongArray.find(
    predicate: (Int) -> Boolean
): C
inline fun <C : MutableCollection<in Long>> LongArray.filterTo(
    destination: C,
     predicate: (Long) -> Boolean
     predicate: (Long) -> Boolean
): C
): Long?
inline fun <C : MutableCollection<in Float>> FloatArray.filterTo(
inline fun FloatArray.find(
    destination: C,
     predicate: (Float) -> Boolean
     predicate: (Float) -> Boolean
): C
): Float?
inline fun <C : MutableCollection<in Double>> DoubleArray.filterTo(
inline fun DoubleArray.find(
    destination: C,
     predicate: (Double) -> Boolean
     predicate: (Double) -> Boolean
): C
): Double?
inline fun <C : MutableCollection<in Boolean>> BooleanArray.filterTo(
inline fun BooleanArray.find(
    destination: C,
     predicate: (Boolean) -> Boolean
     predicate: (Boolean) -> Boolean
): C
): Boolean?
inline fun <C : MutableCollection<in Char>> CharArray.filterTo(
inline fun CharArray.find(
    destination: C,
     predicate: (Char) -> Boolean
     predicate: (Char) -> Boolean
): C
): Char?
inline fun <T, C : MutableCollection<in T>> Iterable<T>.filterTo(
inline fun <T> Iterable<T>.find(
    destination: C,
     predicate: (T) -> Boolean
     predicate: (T) -> Boolean
): C
): T?
</syntaxhighlight>يمكن استدعاء الدالة<code>filterNotTo()‎</code> على [[Kotlin/collections/Map|القواميس]].<syntaxhighlight lang="kotlin">
 
inline fun <K, V, M : MutableMap<in K, in V>> Map<out K, V>.filterTo(
    destination: M,
    predicate: (Entry<K, V>) -> Boolean
): M
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
==القيم المٌعادة==
==القيم المٌعادة==
انظر أعلاه.
العنصر الأول من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها والذي يحقق الشرط المنطقي <code>predicate</code> المُمرّر إليها. وإن لم يكن هناك  أي عنصر يحقق ذلك فستعيد <code>null.</code>
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()find</code> مع اللوائح المتغيرة===
===استخدام الدالة <code>()find</code> مع المصفوفات: الحالة الأولى===
تعرف الشيفرة الآتية [[Kotlin/collections/List|لائحتين]] متغيرتين (<code>mutableList</code>) باسم <code>list</code> و <code>list2</code> باستخدام الدالة <code>()mutableListOf</code>، الأولى مكونة من ستة أعداد والثانية تضم عددًا واحدًا (<code>0</code>)، ثم تستخدم الدالة <code>()filterTo</code> لتصفية عناصر  [[Kotlin/Array|اللائحة]] <code>list</code> التي تحقق الشرط المنطقي<code>predicate</code> المعرّف في الشيفرة وتضيف تلك العناصر إلى <code>list2</code>ثم تعرضها:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تُعرّف الدالة المنطقية <code>()predicate</code> التي تحدد ما إذا كان العدد المُمرّر إليها أصغر من <code>3</code> ، ثم تستخدم الدالة <code>()find</code> لإيجاد العنصر الأول في [[Kotlin/Array|المصفوفة]]<code>array</code> الذي يحقق الدالة <code>()predicate</code>، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val list = mutableListOf(1, 2, 3, 2, 5, 1)
val array = arrayOf(9, 2, 3, 2, 5, 1)
val list2 = mutableListOf(0)
val predicate  : (Int) -> Boolean = { it < 3 }
val predicate  : (Int) -> Boolean = { it < 3 }


list.filterTo(list2, predicate)
println(array.find(predicate)) // 2
}
</syntaxhighlight>
===استخدام الدالة <code>()find</code> مع المصفوفات: الحالة الثانية===
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code>مكونة من ستة أعداد باستخدام الدالة <code>()arrayOf</code>، ثم تُعرّف الدالة المنطقية <code>()predicate</code> التي تحدد ما إذا كان العدد المُمرّر إليها أصغر من <code>0</code> ، ثم تستخدم الدالة <code>()find</code> لإيجاد العنصر الأول في [[Kotlin/Array|المصفوفة]]<code>array</code> الذي يحقق الدالة <code>()predicate</code>، ولمّا كانت كل عناصر <code>array</code> لا تحقق ذلك فستعيد القيمة <code>null</code>، ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
val array = arrayOf(9, 2, 3, 2, 5, 1)
val predicate : (Int) -> Boolean = { it < 0 }


println(list2) // [0, 1, 2, 2, 1]
println(array.find(predicate)) // null
}
}
</syntaxhighlight>
</syntaxhighlight>
==انظر أيضًا==
==انظر أيضًا==
*<code>[[Kotlin/collections/filterNotTo|filterNotTo()]]</code>‎: تضيف إلى المعامل <code>destination</code> الممرّر إليها عناصرّ <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي استُدعيت عبرها والتي لا تحقق الشرط المنطقي <code>predicate</code> المُمرّر إليها. في حال استدعائها عبر قاموس فستضيف كل الأزوج التي لا تحقق الشرط المنطقي  <code>predicate()‎</code>  إلى  القاموس <code>destination</code> الممرّر إليها.
*<code>[[Kotlin/collections/findLast|findLast()]]</code>‎: تعيد العنصر الأخير من [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها والذي يحقق الشرط المنطقي <code>predicate</code> المُمرّر إليها. وإن لم يكن هناك  أي عنصر يحقق ذلك فستعيد <code>null.</code>
*<code>[[Kotlin/collections/filter|filter()]]</code>‎: تعيد  <nowiki/>[[Kotlin/Array|لائحة]] تحتوي عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي تحقق الشرط المنطقي <code>predicate()‎</code> المُمرّر إلى الدالة. وفي حال استدعائها عبرقاموس فستعيد قاموسًا جديدًا مكونًا من كل الأزوج التي تحقق الشرط المنطقي <code>predicate()‎</code> الممرر إلى الدالة.
 
*<code>[[Kotlin/collections/filterIndexed|filterIndexed()]]</code>‎: تعيد <nowiki/>[[Kotlin/Array|لائحة]] تحتوي عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي تحقق الشرط المنطقي <code>predicate()‎</code> المُمرّر إلى الدالة والتي تأخذ قيمة وفهرس عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] كوسيطين.
 
*<code>[[Kotlin/collections/filterNot|filterNot()]]</code>‎: تعيد <nowiki/>[[Kotlin/Array|لائحة]] تحتوي عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي لا تحقق الشرط المنطقي <code>predicate()‎</code> المُمرّر إلى الدالة. وفي حال استدعائها عبر قاموس فستعيد قاموسًا جديدًا مكونًا من كل الأزوج التي لا تحقق الشرط المنطقي <code>predicate()‎</code> الممرر إلى الدالة.
*<code>[[Kotlin/collections/filterIsInstance|filterIsInstance()]]</code>‎: تعيد لائحة تحتوي عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي استُدعيت عبرها والتي هي نسخة (instance) من نوع (type) أو<nowiki/>[[Kotlin/classes|صنفٍ]] معيّن.
*<code>[[Kotlin/collections/filterIndexedTo|filterIndexedTo()]]</code>‎: تضيف  إلى المعامل <code>destination</code> الممرّر إليها عناصرّ <nowiki/>[[Kotlin/collections|المجموعة]] المتغيرة (<code>MutableCollection</code>) التي استُدعيت عبرها والتي تحقق الشرط المنطقي <code>predicate()‎</code> المُمرّر إلى الدالة.
==مصادر==
==مصادر==
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/filter-to.html الدالة  find()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/find.html الدالة  find()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Functions]]

مراجعة 18:46، 15 مايو 2018

تعيد الدالةfind()‎ العنصر الأول من المصفوفة أو المجموعة التي استُدعيت عبرها والذي يحقق الشرط المنطقي predicate المُمرّر إليها. وإن لم يكن هناك أي عنصر يحقق ذلك فستعيد null.

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

inline fun <T> Array<out T>.find(
    predicate: (T) -> Boolean
): T? 
inline fun ByteArray.find(
    predicate: (Byte) -> Boolean
): Byte? 
inline fun ShortArray.find(
    predicate: (Short) -> Boolean
): Short? 
inline fun IntArray.find(predicate: (Int) -> Boolean): Int? (source)
inline fun LongArray.find(
    predicate: (Long) -> Boolean
): Long? 
inline fun FloatArray.find(
    predicate: (Float) -> Boolean
): Float? 
inline fun DoubleArray.find(
    predicate: (Double) -> Boolean
): Double? 
inline fun BooleanArray.find(
    predicate: (Boolean) -> Boolean
): Boolean? 
inline fun CharArray.find(
    predicate: (Char) -> Boolean
): Char? 
inline fun <T> Iterable<T>.find(
    predicate: (T) -> Boolean
): T?

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

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

العنصر الأول من المصفوفة أو المجموعة التي استُدعيت عبرها والذي يحقق الشرط المنطقي predicate المُمرّر إليها. وإن لم يكن هناك أي عنصر يحقق ذلك فستعيد null.

أمثلة

استخدام الدالة ()find مع المصفوفات: الحالة الأولى

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

fun main(args: Array<String>) {
val array = arrayOf(9, 2, 3, 2, 5, 1)
val predicate  : (Int) -> Boolean = { it < 3 }

println(array.find(predicate)) // 2
}

استخدام الدالة ()find مع المصفوفات: الحالة الثانية

تعرف الشيفرة الآتية مصفوفة باسم arrayمكونة من ستة أعداد باستخدام الدالة ()arrayOf، ثم تُعرّف الدالة المنطقية ()predicate التي تحدد ما إذا كان العدد المُمرّر إليها أصغر من 0 ، ثم تستخدم الدالة ()find لإيجاد العنصر الأول في المصفوفةarray الذي يحقق الدالة ()predicate، ولمّا كانت كل عناصر array لا تحقق ذلك فستعيد القيمة null، ثم تطبع الناتج:

fun main(args: Array<String>) {
val array = arrayOf(9, 2, 3, 2, 5, 1)
val predicate  : (Int) -> Boolean = { it < 0 }

println(array.find(predicate)) // null
}

انظر أيضًا

  • findLast()‎: تعيد العنصر الأخير من المصفوفة أو المجموعة التي استُدعيت عبرها والذي يحقق الشرط المنطقي predicate المُمرّر إليها. وإن لم يكن هناك أي عنصر يحقق ذلك فستعيد null.

مصادر