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

من موسوعة حسوب
مراجعة 10:21، 3 سبتمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (مراجعة وتدقيق.)


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

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

يمكن استدعاء الدالة 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

ويمكن استدعاؤها مع المجموعات:

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

ويمكن استدعاؤها مع الخرائط.

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)).

المعاملات

destination

مجموعة قابلة للتغيير (MutableCollection‎) تمثل الوجهة التي سيضاف إليها الناتج.

transform

دالةٌ تطبق على كل عنصر من عناصر المصفوفة، أو المجموعة، أو الخريطة المعطاة، وتعيد قيمة معينة تحل مكانه.

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

يعاد المعامل destination بعد إضافة ناتج تطبيق الدالة transform‎ على كل عنصر من عناصر المصفوفة، أو المجموعة، أو الخريطة المعطاة.

أمثلة

تعرف الشيفرة الآتية قائمة فارغة باسم list باستخدام الدالة ()arrayListOf<Int>‎، ثم تستدعي الدالة ()flatMapTo  مع قائمة مكونة من ثلاثة أعداد وتضيف الناتج إلى القائمة 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]
}

انظر أيضًا

مصادر