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

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

تعيد الدالة associateTo()‎ قاموسًا متغيرا (mutable map) يحتوي ناتج تمرير عناصر المصفوفة أو المجموعة (Collection) إلى الدالة transform.

ان كان لعنصرين نفس المفتاح (key) فإن الأخير هو الذي سيُضاف إلى القاموس.

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

في حال استدعاء الدالة associateTo()‎عبر مصفوفة فستعيد القاموس المتغير destination وأزواجه توفرها الدالة transform()‎ مُطبقةً على عناصر المصفوفة:

inline fun <T, K, V, M : MutableMap<in K, in V>> Array<out T>.associateTo(
    destination: M, 
    transform: (T) -> Pair<K, V>
): M 
inline fun <K, V, M : MutableMap<in K, in V>> ByteArray.associateTo(
    destination: M, 
    transform: (Byte) -> Pair<K, V>
): M 
inline fun <K, V, M : MutableMap<in K, in V>> ShortArray.associateTo(
    destination: M, 
    transform: (Short) -> Pair<K, V>
): M 
inline fun <K, V, M : MutableMap<in K, in V>> IntArray.associateTo(
    destination: M, 
    transform: (Int) -> Pair<K, V>
): M 
inline fun <K, V, M : MutableMap<in K, in V>> LongArray.associateTo(
    destination: M, 
    transform: (Long) -> Pair<K, V>
): M 
inline fun <K, V, M : MutableMap<in K, in V>> FloatArray.associateTo(
    destination: M, 
    transform: (Float) -> Pair<K, V>
): M 
inline fun <K, V, M : MutableMap<in K, in V>> DoubleArray.associateTo(
    destination: M, 
    transform: (Double) -> Pair<K, V>
): M 
inline fun <K, V, M : MutableMap<in K, in V>> BooleanArray.associateTo(
    destination: M, 
    transform: (Boolean) -> Pair<K, V>
): M 
inline fun <K, V, M : MutableMap<in K, in V>> CharArray.associateTo(
    destination: M, 
    transform: (Char) -> Pair<K, V>
): M

في حال استدعاء الدالة associateTo()‎عبر مجموعة (Collection)  فستعيد القاموس المتغير destination وأزواجه توفرها الدالة keySelector()‎ مُطبقةً على عناصر المجموعة:

inline fun <T, K, V, M : MutableMap<in K, in V>> Iterable<T>.associateTo(
    destination: M, 
    transform: (T) -> Pair<K, V>
): M

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

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

قاموس. (انظر شرح الدالة أعلاه لمزيد من التفاصيل)

أمثلة

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

تعرف الشيفرة الآتية لائحة باسم list مكونة من أربعة أعداد باستخدام الدالة ()listOf، ثم تنشئ قاموسًا متغيرًا باسم map بتمرير الدالة ()func (التي تحول عددًا إلى زوج) إلى()associateTo ثم تطبع الناتج:

fun main(args: Array<String>) {
    val list = listOf(1,2,3,4)
    val map = mutableMapOf<Int, Int>()
    val func: (Int) -> Pair<Int,Int> = {Pair(it + 10,it * 4)}
    list.associateTo(map,func)

    println(map) // {11=4, 12=8, 13=12, 14=16}
}

انظر أيضًا

  • associateByTo()‎: تعيد قاموسًا (map).
  • associateBy()‎: تعيد قاموسًا (map).
  • associate()‎: تعيد قاموسًا (map).
  • asList()‎: تعيد لائحة والتي تُغلّف المصفوفة الاصلية.
  • asIterable()‎: تُنشئ نسخة تكرارية (Iterable instance) والتي تُغلّف المصفوفة الاصلية وتعيد عناصرها عندما تُستخدم في حلقات التكرار (مثلfor).

مصادر