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

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>find()‎</code> في لغة Kotlin}}</noinclude> تضيف الدالة<code>find()‎</code> إلى المعامل <code>d...'
 
طلا ملخص تعديل
 
(5 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 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|المجموعة]] التي استُدعيت معها ثمَّ تعيد أول ظهور له.
 
في حال استدعائها عبر [[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(
</syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة [[Kotlin/inline functions|الدوال المباشرة (inline functions)]]).
    destination: M,
 
    predicate: (Entry<K, V>) -> Boolean
== المعاملات ==
): M
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].


==القيم المٌعادة==
=== <code>predicate</code> ===
انظر أعلاه.
دالةٌ تمثل الشرط المراد تطبيقه على كل عنصر من عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] المعطاة. يمرر إلى هذه الدالة قيمة العنصر وتعيد قيمةً منطقيةً.
 
==القيم المعادة==
يعاد أول ظهور للعنصر المبحوث عنه ضمن عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] المعطاة والذي يحقق الشرط المنطقي <code>predicate</code> المعطى أيضًا، أو القيمة <code>null</code> إن لم يُعثر على أي عنصر يحقق ذلك الشرط.
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()find</code> مع اللوائح المتغيرة===
<nowiki/>استعمال الدالة <code>()find</code> للبحث عن أول عنصر محقق لشرط معين ضمن مصفوفة:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية [[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">
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, 0, 5, 1)
val list2 = mutableListOf(0)
    val predicate1: (Int) -> Boolean = { it < 3 }
val predicate  : (Int) -> Boolean = { it < 3 }
    val predicate2: (Int) -> Boolean = { it == 6 }


list.filterTo(list2, predicate)
    println(array.find(predicate1)) // 2
 
    println(array.find(predicate2)) // null
println(list2) // [0, 1, 2, 2, 1]
}
}
</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>[[Kotlin/collections/filter|filter()]]</code>‎: تعيد  <nowiki/>[[Kotlin/Array|لائحة]] تحتوي عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] التي تحقق الشرط المنطقي <code>predicate()‎</code> المُمرّر إلى الدالة. وفي حال استدعائها عبرقاموس فستعيد قاموسًا جديدًا مكونًا من كل الأزوج التي تحقق الشرط المنطقي <code>predicate()‎</code> الممرر إلى الدالة.
*الدالة <code>[[Kotlin/collections/firstOrNull|firstOrNull()‎]]</code>: تجلب أول عنصر من عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت معها إن لم يُمرَّر إليها أي شيء، أو أول عنصر يحقق شرطًا معيَّنًا في حال تمرير دالة منطقية إليها.
 
*الدالة <code>[[Kotlin/collections/filter|filter()]]</code>: ترشِّح عناصر <nowiki/>[[Kotlin/Array|المصفوفة]] أو <nowiki/>[[Kotlin/collections|المجموعة]] أو أزواج الخرائط المعطاة التي تحقِّق شرطًا معيَّنًا ثمّ تعيدها.
*<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 Function]]
[[تصنيف:Kotlin Collection]]

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

تبحث الدالة find()‎ على عنصر محدَّد ضمن عناصر المصفوفة أو المجموعة التي استُدعيت معها ثمَّ تعيد أول ظهور له.

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

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

دالةٌ تمثل الشرط المراد تطبيقه على كل عنصر من عناصر المصفوفة أو المجموعة المعطاة. يمرر إلى هذه الدالة قيمة العنصر وتعيد قيمةً منطقيةً.

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

يعاد أول ظهور للعنصر المبحوث عنه ضمن عناصر المصفوفة أو المجموعة المعطاة والذي يحقق الشرط المنطقي predicate المعطى أيضًا، أو القيمة null إن لم يُعثر على أي عنصر يحقق ذلك الشرط.

أمثلة

استعمال الدالة ()find للبحث عن أول عنصر محقق لشرط معين ضمن مصفوفة:

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

    println(array.find(predicate1)) // 2
    println(array.find(predicate2)) // null
}

انظر أيضًا

  • الدالة findLast()‎: تبحث على عنصر محدَّد ضمن عناصر المصفوفة أو المجموعة التي استُدعيت معها ثمَّ تعيد آخر ظهور له.
  • الدالة firstOrNull()‎: تجلب أول عنصر من عناصر المصفوفة أو المجموعة التي استُدعيت معها إن لم يُمرَّر إليها أي شيء، أو أول عنصر يحقق شرطًا معيَّنًا في حال تمرير دالة منطقية إليها.
  • الدالة filter()‎: ترشِّح عناصر المصفوفة أو المجموعة أو أزواج الخرائط المعطاة التي تحقِّق شرطًا معيَّنًا ثمّ تعيدها.

مصادر