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

من موسوعة حسوب
مراجعة 19:04، 27 مايو 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>joinTo()‎</code> في لغة Kotlin}}</noinclude> يخت تجمّع الدالة<code>joinTo()‎</code> عناصر Ko...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

يخت

تجمّع الدالةjoinTo()‎ عناصر المصفوفة أو المجموعة التي استُدعيت عبرها وتضيفها إلى القاموس.المُمرّر destination حيث مفاتيحه تعيدها الدالة الممرّرة keySelector()‎ مُطبّقة على كل عناصر المصفوفة أو المجموعة، وقيمُه لوائح تضم العناصر المقابلة، وفي حال تمرير معامل ثالث valueTransform فإنّ القيم ستكون لوائح تضم ناتج تطبيق الدالة valueTransform على العناصر المقابلة . ثم تعيد القاموسdestination.

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

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

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

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

في حال استدعاء الدالةgroupByTo()‎ على المصفوفات مع تمرير ثلاث معاملات destination و valueTransform و keySelector فإنّها تُجمّع العناصر المعادة من قبل الدالة valueTransform()‎ مُطبّقة على كل عناصر المصفوفة وتربطها بالمفتاح الذي تعيده الدالةkeySelector()‎ مطبقة على على عناصر المصفوفة وتضيفها إلى القاموس المُمرّر destination حيث كل مفتاح مرتبط بلائحة العناصر المقابلة. ثم تعيد القاموس destination.

inline fun <T, K> Iterable<T>.groupBy(
    keySelector: (T) -> K
): Map<K, List<T>>

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

inline fun <T, K, V> Iterable<T>.groupBy(
    keySelector: (T) -> K, 
    valueTransform: (T) -> V
): Map<K, List<V>>

في حال استدعاء الدالةgroupByTo()‎ على المجموعات مع تمرير ثلاث معاملات destination و valueTransform و keySelector فإنّها تُجمّع العناصر المعادة من قبل الدالة valueTransform()‎ مُطبّقة على كل عناصر المجموعة وتربطها بالمفتاح الذي تعيده الدالةkeySelector()‎ مطبقة على على عناصر المجموعة وتضيفها إلى القاموس المُمرّر destination حيث كل مفتاح مرتبط بلائحة العناصر المقابلة. ثم تعيد القاموس destination.

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

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

القاموس destination المُمرّر إلى الدالة()groupByTo.

أمثلة

استخدام الدالة ()joinTo مع المصفوفات مع تمرير معاملين

تعرف الشيفرة الآتية مصفوفة باسم array مكونة من ست سلاسل نصية باستخدام الدالة ()arrayOf، ثم تُنشئ قاموسًا فارغًا باسم map باستخدام الدالة ()mutableMapOf، ثم تستخدم الدالة ()joinTo على array بتمرير القاموس map و دالة تعيد طول السلسلة النصية المُمرّرة، ثم تطبع القاموس map:

fun main(args: Array<String>) {
val array = arrayOf("a", "abc", "ab", "def","avde" ,"abcd")
val map: MutableMap<Int, MutableList<String>> = mutableMapOf()
    
array.groupByTo ( map, { it.length })
    
print(map) // {1=[a], 3=[abc, def], 2=[ab], 4=[avde, abcd]}
}

استخدام الدالة ()joinTo مع المصفوفات مع تمرير ثلاث معاملات

تعرف الشيفرة الآتية مصفوفة باسم array مكونة من ست سلاسل نصية باستخدام الدالة ()arrayOf، ثم تُنشئ قاموسًا فارغًا باسم map باستخدام الدالة ()mutableMapOf، ثم تستدعي الدالة ()groupByTo على array بتمرير القاموس map و دالة تعيد طول السلسلة النصية المُمرّرة ودالة تحوّل السلاسل النصية إلى سلاسل نصية ذات حروف كبيرة ، ثم تطبع القاموس map:

fun main(args: Array<String>) {
val array = arrayOf("a", "abc", "ab", "def","avde" ,"abcd")
val map: MutableMap<Int, MutableList<String>> = mutableMapOf()
    
array.groupByTo ( map, { it.length }, {it.toUpperCase()})
    
print(map) // {1=[A], 3=[ABC, DEF], 2=[AB], 4=[AVDE, ABCD]}
}

انظر أيضًا

groupBy()‎: تعيد قاموسًا يُجمّع عناصر المصفوفة أو المجموعة التي استُدعيت عبرها حيث مفاتيحه تعيدها الدالة المُمرّرة keySelector وقيمه لوائحُ تضم عناصر المصفوفة أو المجموعة (أو ناتج تمرير عناصر المصفوفة أو المجموعة على الدالة valueTransform في حال تمريرها).

مصادر

الدالة joinTo()‎ في التوثيق الرسمي للمكتبة القياسية في لغة Kotlin