الدالة text.groupByTo()
في لغة Kotlin
تجمّع الدالةgroupByTo()
عناصر سلسلة الحروف التي استُدعيت عبرها وتضيفها إلى القاموس المُمرّر destination
حيث مفاتيحه تعيدها الدالة الممرّرة keySelector()
مُطبّقة على كل عناصر سلسلة الحروف، وقيمُه لوائح تضم العناصر المقابلة، وفي حال تمرير معامل ثالث valueTransform
فإنّ القيم ستكون لوائح تضم ناتج تطبيق الدالة valueTransform
على العناصر المقابلة . ثم تعيد القاموسdestination.
البنية العامة
inline fun <K, M : MutableMap<in K, MutableList<Char>>> CharSequence.groupByTo(
destination: M,
keySelector: (Char) -> K
): M
في حال استدعاء الدالةgroupByTo()
على سلسلة حروف مع تمرير معاملين destination
وkeySelector
فإنّها تُجمّع عناصر سلسلة الحروف الأصلية وتضيفها إلى القاموس المُمرّر destination
حيث مفاتيحه تعيدها الدالة الممرّرة keySelector()
مُطبّقة على كل عناصر سلسلة الحروف وقيمه لوائح تضم العناصر المقابلة. ثم تعيد القاموسdestination.
inline fun <K, V, M : MutableMap<in K, MutableList<V>>> CharSequence.groupByTo(
destination: M,
keySelector: (Char) -> K,
valueTransform: (Char) -> V
): M
في حال استدعاء الدالةgroupByTo()
على سلسلة حروف مع تمرير ثلاث معاملات destination
و valueTransform
و keySelector
فإنّها تُجمّع العناصر المعادة من قبل الدالة valueTransform()
مُطبّقة على كل عناصر سلسلة الحروف وتربطها بالمفتاح الذي تعيده الدالةkeySelector()
مطبقة على على عناصر سلسلة الحروف وتضيفها إلى القاموس المُمرّر destination
حيث كل مفتاح مرتبط بلائحة العناصر المقابلة. ثم تعيد القاموسdestination.
يُلاحَظ وجود الكلمة المفتاحية inline
للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع توثيق الدوال المباشرة (inline functions).
القيم المعادة
القاموس destination
.
أمثلة
استخدام الدالة ()groupByTo
مع السلاسل النصية مع تمرير معاملين
تعرِّف الشيفرة الآتية سلسلة نصية باسم str
، ثم تُنشئ قاموسًا فارغًا باسم map
باستخدام الدالة ()mutableMapOf
، ثمَّ تستدعي الدالة ()groupByTo
عبر str
مع تمرير القاموس map
ودالة كوسيطين، ثمَّ تطبع الناتج:
fun main(args: Array<String>) {
val str = "abcdsafddssfghjjffhgggfeeregtgggfgddghhgfdqdgdg"
val map: MutableMap<Byte, MutableList<Char>> = mutableMapOf()
str.groupByTo (map) { it.toByte() }
print( map )
}
المُخرجات
{97=[a, a], 98=[b], 99=[c], 100=[d, d, d, d, d, d, d, d], 115=[s, s, s], 102=[f, f, f, f, f, f, f], 103=[g, g, g, g, g, g, g, g, g, g, g, g, g], 104=[h, h, h, h], 106=[j, j], 101=[e, e, e], 114=[r], 116=[t], 113=[q]}
استخدام الدالة ()groupByTo
مع سلسلة نصية مع تمرير ثلاث مُعاملات
تعرِّف الشيفرة الآتية سلسلة نصية باسم str
، ثم تُنشئ قاموسًا فارغًا باسم map
باستخدام الدالة ()mutableMapOf
، ثمَّ تستدعي الدالة ()groupByTo
عبر str
مع تمرير القاموس map
ودالتين كوسائط، ثمَّ تطبع الناتج:
fun main(args: Array<String>) {
val str = "abcdsafddssfghjjffhgggfeeregtgggfgddghhgfdqdgdg"
val map: MutableMap<Byte, MutableList<Char>> = mutableMapOf()
str.groupByTo (map, { it.toByte() }, {it.toUpperCase()} )
print( map )
}
المُخرجات:
{97=[A, A], 98=[B], 99=[C], 100=[D, D, D, D, D, D, D, D], 115=[S, S, S], 102=[F, F, F, F, F, F, F], 103=[G, G, G, G, G, G, G, G, G, G, G, G, G], 104=[H, H, H, H], 106=[J, J], 101=[E, E, E], 114=[R], 116=[T], 113=[Q]}
انظر أيضًا
groupBy()
: تعيد قاموسًا يُجمّع حروف سلسلة الحروف التي استُدعيت عبرها حيث مفاتيحه تعيدها الدالة المُمرّرةkeySelector
وقيمه لوائحُ تضم عناصر سلسلة الحروف (أو ناتج تمرير عناصر المصفوفة أو المجموعة على الدالةvalueTransform
في حال تمريرها).groupingBy()
: تُنشئ كائنًا من النوعGrouping
من سلسلة الحروف التي استُدعيت عبرها لاستخدامه لاحقًا مع عمليات المجموعات (group-and-fold operations)، وذلك باستخدام الدالة المُمرّرةkeySelector
لاستخلاص مفتاح من كل عنصر .