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

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

تشبه الدالة mapIndexedTo()‎ الدالةَ mapIndexed()‎ في جميع النواحي باستثناء أنها تضيف الناتج المعاد إلى المعامل الممرَّر إليها.

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

يمكن استدعاء الدالةmapIndexedTo()‎ مع المصفوفات والمجموعات:

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

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

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

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

يعاد المعامل destination بعد إضافة ناتج تطبيق الدالة transform()‎ المُمرّرة على فهرس وقيمة كل عنصر من عناصر المصفوفة أو المجموعة المعطاة إليه.

أمثلة

تعرف الشيفرة الآتية مصفوفة باسم array باستخدام الدالة ()arrayOf ثم تستخدم الدالة  ()mapIndexedTo  لتخزين ناتج جمع قيمة كل عنصر من عناصر تلك المصفوفة مع فهرسه في القائمة المتغيرة mutable :

fun main(args: Array<String>) {
val array = arrayOf(0, 2, 2, 4, 7, 5)
val mutable: MutableList<Int> = mutableListOf()
    
array.mapIndexedTo (mutable) { a, b -> a + b }
    
println(mutable)   //  [0, 3, 4, 7, 11, 10]
}

انظر أيضًا

مصادر