الفرق بين المراجعتين لصفحة: «Kotlin/kotlin.text/groupByTo»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>text.groupByTo()</code> في لغة Kotlin}}</noinclude> تعيد الدالة<code>groupByTo()</code> Kotlin/colle...' |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: الدالة <code>text.groupByTo()</code> في لغة Kotlin}}</noinclude> | <noinclude>{{DISPLAYTITLE: الدالة <code>text.groupByTo()</code> في لغة Kotlin}}</noinclude> | ||
تجمّع الدالة<code>groupByTo()</code> عناصر <nowiki/>[[Kotlin/CharSequence/index|سلسلة الحروف]] التي استُدعيت عبرها وتضيفها إلى القاموس المُمرّر <code>destination</code> حيث مفاتيحه تعيدها الدالة الممرّرة <code>keySelector()</code> مُطبّقة على كل عناصر [[Kotlin/CharSequence/index|سلسلة الحروف]]، وقيمُه لوائح تضم العناصر المقابلة، وفي حال تمرير معامل ثالث <code>valueTransform</code> فإنّ القيم ستكون لوائح تضم ناتج تطبيق الدالة <code>valueTransform</code> على العناصر المقابلة . ثم تعيد القاموس<code>destination.</code> | |||
القاموس | |||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="kotlin"> | <syntaxhighlight lang="kotlin"> | ||
inline fun <K> CharSequence. | inline fun <K, M : MutableMap<in K, MutableList<Char>>> CharSequence.groupByTo( | ||
destination: M, | |||
keySelector: (Char) -> K | keySelector: (Char) -> K | ||
): | ): M | ||
</ | </syntaxhighlight><nowiki/><nowiki/><nowiki/><nowiki/>في حال استدعاء الدالة<code>groupByTo()</code> على <nowiki/>[[Kotlin/CharSequence/index|سلسلة حروف]] مع تمرير معاملين <code>destination</code> و<code>keySelector</code> فإنّها تُجمّع عناصر <nowiki/>[[Kotlin/CharSequence/index|سلسلة الحروف]] الأصلية وتضيفها إلى القاموس المُمرّر <code>destination</code> حيث مفاتيحه تعيدها الدالة الممرّرة <code>keySelector()</code> مُطبّقة على كل عناصر <nowiki/>[[Kotlin/CharSequence/index|سلسلة الحروف]] وقيمه لوائح تضم العناصر المقابلة. ثم تعيد القاموس<code>destination.</code><nowiki/><nowiki/><nowiki/><nowiki/><syntaxhighlight lang="kotlin"> | ||
inline fun <K, V> CharSequence. | inline fun <K, V, M : MutableMap<in K, MutableList<V>>> CharSequence.groupByTo( | ||
destination: M, | |||
keySelector: (Char) -> K, | keySelector: (Char) -> K, | ||
valueTransform: (Char) -> V | valueTransform: (Char) -> V | ||
): | ): M | ||
</syntaxhighlight>في حال استدعاء الدالة<code> | </syntaxhighlight> | ||
في حال استدعاء الدالة<code>groupByTo()</code> على <nowiki/>[[Kotlin/CharSequence/index|سلسلة حروف]] مع تمرير ثلاث معاملات <code>destination</code> و <code>valueTransform</code> و <code>keySelector</code> فإنّها تُجمّع العناصر المعادة من قبل الدالة <code>valueTransform()</code> مُطبّقة على كل عناصر <nowiki/>[[Kotlin/CharSequence/index|سلسلة الحروف]] وتربطها بالمفتاح الذي تعيده الدالة<code>keySelector()</code>مطبقة على على عناصر <nowiki/>[[Kotlin/CharSequence/index|سلسلة الحروف]] وتضيفها إلى القاموس المُمرّر <code>destination</code> حيث كل مفتاح مرتبط بلائحة العناصر المقابلة. ثم تعيد القاموس<code>destination.</code> | |||
يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]]. | |||
==القيم المٌعادة== | ==القيم المٌعادة== | ||
القاموس <code>destination</code>. | |||
==أمثلة== | ==أمثلة== | ||
===استخدام الدالة <code>()groupByTo</code> مع السلاسل النصية مع تمرير | ===استخدام الدالة <code>()groupByTo</code> مع السلاسل النصية مع تمرير معاملين === | ||
تعرِّف الشيفرة الآتية [[Kotlin/String|سلسلة نصية]] باسم <code>str</code>، ثمَّ تستدعي الدالة <code>()groupByTo</code> | تعرِّف الشيفرة الآتية [[Kotlin/String|سلسلة نصية]] باسم <code>str</code>، ثم تُنشئ قاموسًا فارغًا باسم <code>map</code> باستخدام الدالة <code>()mutableMapOf</code>، ثمَّ تستدعي الدالة <code>()groupByTo</code> عبر <code>str</code> مع تمرير القاموس <code>map</code> ودالة كوسيطين، ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin"> | ||
fun main(args: Array<String>) { | fun main(args: Array<String>) { | ||
val str = "abcdsafddssfghjjffhgggfeeregtgggfgddghhgfdqdgdg" | val str = "abcdsafddssfghjjffhgggfeeregtgggfgddghhgfdqdgdg" | ||
val map: MutableMap<Byte, MutableList<Char>> = mutableMapOf() | |||
str.groupByTo (map) { it.toByte() } | |||
print( map ) | |||
} | } | ||
</syntaxhighlight>المُخرجات<syntaxhighlight lang="kotlin"> | </syntaxhighlight>المُخرجات<syntaxhighlight lang="kotlin"> | ||
سطر 32: | سطر 35: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===استخدام الدالة <code>()groupByTo</code> مع سلسلة نصية مع تمرير | ===استخدام الدالة <code>()groupByTo</code> مع سلسلة نصية مع تمرير ثلاث مُعاملات=== | ||
تعرِّف الشيفرة الآتية [[Kotlin/String|سلسلة نصية]] باسم <code>str</code>، ثمَّ تستدعي الدالة <code>()groupByTo</code> | تعرِّف الشيفرة الآتية [[Kotlin/String|سلسلة نصية]] باسم <code>str</code>، ثم تُنشئ قاموسًا فارغًا باسم <code>map</code> باستخدام الدالة <code>()mutableMapOf</code>، ثمَّ تستدعي الدالة <code>()groupByTo</code> عبر <code>str</code> مع تمرير القاموس <code>map</code> ودالتين كوسائط، ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin"> | ||
fun main(args: Array<String>) { | fun main(args: Array<String>) { | ||
val str = "abcdsafddssfghjjffhgggfeeregtgggfgddghhgfdqdgdg" | val str = "abcdsafddssfghjjffhgggfeeregtgggfgddghhgfdqdgdg" | ||
val map: MutableMap<Byte, MutableList<Char>> = mutableMapOf() | |||
str.groupByTo (map, { it.toByte() }, {it.toUpperCase()} ) | |||
print( map ) | |||
} | } | ||
</syntaxhighlight>المُخرجات:<syntaxhighlight lang="kotlin"> | </syntaxhighlight>المُخرجات:<syntaxhighlight lang="kotlin"> | ||
سطر 44: | سطر 50: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
<code>[[Kotlin/ | <code>[[Kotlin/kotlin.text/groupBy|groupBy()]]</code>: تعيد [[Kotlin/collections/Map|قاموسًا]] يُجمّع حروف [[Kotlin/CharSequence/index|سلسلة الحروف]] التي استُدعيت عبرها حيث مفاتيحه تعيدها الدالة المُمرّرة <code>keySelector</code> وقيمه لوائحُ تضم عناصر [[Kotlin/CharSequence/index|سلسلة الحروف]] (أو ناتج تمرير عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] على الدالة <code>valueTransform</code> في حال تمريرها). | ||
==مصادر== | ==مصادر== | ||
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/group-by.html الدالة text.groupByTo() في التوثيق الرسمي للمكتبة القياسية في لغة Kotlin] | *[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/group-by-to.html الدالة text.groupByTo() في التوثيق الرسمي للمكتبة القياسية في لغة Kotlin] | ||
[[تصنيف:Kotlin]] | [[تصنيف:Kotlin]] | ||
[[تصنيف:Kotlin Functions]] | [[تصنيف:Kotlin Functions]] |
مراجعة 18:14، 9 يوليو 2018
تجمّع الدالة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
في حال تمريرها).