الدالة flatMapTo()‎ في لغة Kotlin

من موسوعة حسوب


تضيف الدالةflatMapTo()‎ إلى اللائحة المُتغيرة‎ (MutableCollection‎) ‎destinationالمُمرّرة إليها ناتج تطبيق الدالة transform()‎ على عناصر المصفوفة أو المجموعة التي استُدعيت عبرها، وفي حال استدعاء الدالة flatMapTo()‎ على قاموس فستضيف إلى اللائحة destination ناتج تطبيق الدالة transform()‎ على مداخل (entries) القاموس.

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

يمكن استدعاء الدالةflatMapTo()‎ على المصفوفات.

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

يمكن استدعاء الدالةflatMapTo()‎ على المجموعات.

inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.flatMapTo(
    destination: C, 
    transform: (T) -> Iterable<R>
): C

يمكن استدعاء الدالةflatMapTo()‎ على القواميس.

inline fun <K, V, R, C : MutableCollection<in R>> Map<out K, V>.flatMapTo(
    destination: C, 
    transform: (Entry<K, V>) -> Iterable<R>
): C

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

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

لائحة تضم ناتج تطبيق الدالة transform()‎ المُمرّرة إليها على عناصر المصفوفة أو المجموعة التي استُدعيت عبرها، وفي حال استدعاء الدالة flatMap()‎ على قاموس فستعيد لائحة تضم ناتج تطبيق الدالة transform()‎ على مداخل (entries) القاموس.

أمثلة

استخدام الدالة ()flatMapTo مع اللوائح

تعرف الشيفرة الآتية لائحة فارغة باسم list باستخدام الدالة ()arrayListOf<Int>‎، ثم تستدعي الدالة()flatMap  على لائحة مكونة من ثلاثة أعداد وتُمرّر لها اللائحة  list ودالة، ثم تطبع الناتج:

fun main(args: Array<String>) {
val list = arrayListOf<Int>()
listOf(1, 2, 3).flatMapTo(list) { listOf(it, it + 1) }
print(list) // [1, 2, 2, 3, 3, 4]
}

انظر أيضًا

  • flatMap()‎: تعيد  لائحة تضم ناتج تطبيق الدالة المُمرّرة إليها على عناصر المصفوفة أو المجموعة التي استُدعيت عبرها، وفي حال استدعاء الدالة flatMap()‎ على قاموس فستعيد لائحة تضم ناتج تطبيق الدالة المُمرّرة إليها على مداخل (entries) القاموس.

مصادر