الدالة filterIndexedTo()‎ في Kotlin

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث

تشبه الدالة filterIndexedTo()‎ الدالة filterIndexed() تمامًا باستثناء أنها تضيف الناتج إلى كائن موجود مسبقًا بدلًا من أن تعيده.  

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

inline fun <T, C : MutableCollection<in T>> Array<out T>.filterIndexedTo(
    destination: C, 
    predicate: (index: Int, T) -> Boolean
): C 
inline fun <C : MutableCollection<in Byte>> ByteArray.filterIndexedTo(
    destination: C, 
    predicate: (index: Int, Byte) -> Boolean
): C 
inline fun <C : MutableCollection<in Short>> ShortArray.filterIndexedTo(
    destination: C, 
    predicate: (index: Int, Short) -> Boolean
): C 
inline fun <C : MutableCollection<in Int>> IntArray.filterIndexedTo(
    destination: C, 
    predicate: (index: Int, Int) -> Boolean
): C 
inline fun <C : MutableCollection<in Long>> LongArray.filterIndexedTo(
    destination: C, 
    predicate: (index: Int, Long) -> Boolean
): C 
inline fun <C : MutableCollection<in Float>> FloatArray.filterIndexedTo(
    destination: C, 
    predicate: (index: Int, Float) -> Boolean
): C 
inline fun <C : MutableCollection<in Double>> DoubleArray.filterIndexedTo(
    destination: C, 
    predicate: (index: Int, Double) -> Boolean
): C 
inline fun <C : MutableCollection<in Boolean>> BooleanArray.filterIndexedTo(
    destination: C, 
    predicate: (index: Int, Boolean) -> Boolean
): C
inline fun <C : MutableCollection<in Char>> CharArray.filterIndexedTo(
    destination: C, 
    predicate: (index: Int, Char) -> Boolean
): C 
inline fun <T, C : MutableCollection<in T>> Iterable<T>.filterIndexedTo(
    destination: C, 
    predicate: (index: Int, T) -> Boolean
): C

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

المعاملات

destination

مجموعة متغيرة موجود مسبقًا تمثل الوجهة المراد إضافة الناتج فيها.

predicate

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

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

تُعاد عناصر المصفوفة أو المجموعة المعطاة التي أعيدت القيمة true معها عند تطبيق الدالة predicate عليها بعد إضافتها إلى المعامل destination.

أمثلة

تعرِّف الشيفرة الآتية قائمتين متغيرتين (mutableList) باسم list و list2 باستخدام الدالة ()mutableListOf، الأولى مكونة من ستة أعداد والثانية تضم عددًا واحدًا ثمَّ تستخدم الدالة ()filterIndexedTo لترشيح عناصر القائمة الأولى وإضافتها إلى عناصر القائمة الثانية:

fun main(args: Array<String>) {
    val list = mutableListOf(1, 2, 3, 2, 5, 1)
    val list2 = mutableListOf(0)
    val predicate: (Int, Int) -> Boolean = { x, y -> x < y }

    list.filterIndexedTo(list2, predicate)

    println(list2)// [0, 1, 2, 3, 5]
}

انظر أيضًا

  • الدالة filterIndexed(): ترشِّح ترشِّح عناصر المصفوفة أو المجموعة المعطاة التي تُعاد القيمة true معها عند تطبيق الدالة predicate()‎ المُمرّر عليها، إذ يمرَّر فهرس كل عنصر وقيمته إلى الدالة predicate()‎ ثم تعيد بدورها قيمة منطقيَّة.
  • الدالة filterTo()‎: تشبه هذه الدالة في جميع النواحي باستثناء أنها تضيف الناتج إلى المعامل الممرر إليها.
  • الدالة filterIsInstanceTo()‎: تضيف عناصر المصفوفة أو المجموعة المعطاة التي هي نسخةٌ (instance) من نوع أو صنفٍ معيّن إلى المجموعة المتغيرة destination المُمرّرة إليها.
  • الدالة filterNotNullTo()‎: تشبه الدالة filterNotNull()‎ في جميع النواحي باستثناء أنَّها تضيف الناتج الذي تعيده إلى المعامل المُمرَّر إليها.
  • الدالة filterNotTo()‎: تشبه الدالة filterNot()‎ في جميع النواحي باستثناء أنَّها تضيف الناتج المعاد إلى المعامل الممرَّر إليها.
  • الدالة mapIndexed()‎: تعيد قائمةً تحوي ناتج تطبيق الدالة المُمرّرة إليها على فهرس وقيمة كل عنصر من عناصر المصفوفة أو المجموعة التي استُدعيت معها.
  • الدالة mapIndexedTo()‎: تشبه الدالة mapIndexed()‎ في جميع النواحي باستثناء أنها تضيف الناتج المعاد إلى المعامل الممرَّر إليها.
  • الدالة drop()‎: تعيد قائمة تحوي جميع عناصر المصفوفة أو المجموعة التي استُدعيت معها باستثناء آخر n عنصر.

مصادر