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

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

تُنشئ الدالةgroupingBy()‎ كائنًا من النوع Grouping من المصفوفة أو المجموعة التي استُدعيت عبرها لاستخدامه لاحقًا مع عمليات المجموعات (group-and-fold operations)، وذلك باستخدام الدالة المُمرّرة keySelector لاستخلاص مفتاح من كل عنصر .

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

يمكن استدعاء الدالةgroupByTo()‎ عبر المصفوفات:

inline fun <T, K> Array<out T>.groupingBy(
    crossinline keySelector: (T) -> K
): Grouping<T, K>

يمكن استدعاء الدالةgroupByTo()‎ عبر المجموعات:

inline fun <T, K> Iterable<T>.groupingBy(
    crossinline keySelector: (T) -> K
): Grouping<T, K>

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

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

كائن من النوع Grouping من المصفوفة أو المجموعة التي استُدعيت عبرها لاستخدامه لاحقًا مع عمليات المجموعات ( group-and-fold ).

أمثلة

استخدام الدالة ()groupingBy مع المصفوفات

تعرف الشيفرة الآتية مصفوفة باسم array مكونة من ست سلاسل نصية باستخدام الدالة ()arrayOf، ثم تُنشئ منه كائنًا من النوع Grouping باسم grouping باستخدام الدالة ()groupingBy، وتمرّر إليها دالة تعيد الحرف الأول من السلسلة النصية، ثم تطبع القاموس map:

fun main(args: Array<String>) {
val array = arrayOf("a", "abc", "ab", "def","avde" ,"abcd")
    
val grouping = array.groupingBy { it.first()}.eachCount()
    
print(grouping) // {a=5, d=1}
}

انظر أيضًا

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

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

مصادر

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