الفرق بين المراجعتين ل"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> [[Kotlin/collections/Map|قاموسًا]] يُجمّع حروف  [[Kotlin/CharSequence/index|سلسلة الحروف]] التي استُدعيت عبرها حيث مفاتيحه تعيدها الدالة المُمرّرة <code>keySelector</code> وقيمه لوائحُ تضم عناصر  [[Kotlin/CharSequence/index|سلسلة الحروف]] (أو ناتج تمرير عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] على الدالة <code>valueTransform</code> في حال تمريرها).
+
تجمّع الدالة<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>
 
 
القاموس المُعاد يحافظ على على ترتيب التكرار (entry iteration order) للمفاتيح الناتجة عن  [[Kotlin/CharSequence/index|سلسلة الحروف]] الأصلية.
 
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="kotlin">
 
<syntaxhighlight lang="kotlin">
inline fun <K> CharSequence.groupBy(
+
inline fun <K, M : MutableMap<in K, MutableList<Char>>> CharSequence.groupByTo(
 +
    destination: M,
 
     keySelector: (Char) -> K
 
     keySelector: (Char) -> K
): Map<K, List<Char>>
+
): M
</syntaxhighlight>في حال استدعاء الدالة<code>groupBy()‎</code> على <nowiki/>[[Kotlin/CharSequence/index|سلسلة حروف]] مع تمرير معامل واحد <code>keySelector</code> فإنّها تُجمّع عناصر  <nowiki/>[[Kotlin/CharSequence/index|سلسلة الحروف]] الأصلية في <nowiki/>[[Kotlin/collections/Map|قاموس]]. حيث مفاتيحه تعيدها الدالة الممرّرة <code>keySelector()‎</code> مُطبّقة على كل عناصر  <nowiki/>[[Kotlin/CharSequence/index|سلسلة حروف]] وقيمه لوائح تضم العناصر المقابلة.<syntaxhighlight lang="kotlin">
+
</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.groupBy(
+
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
): Map<K, List<V>>
+
): M
</syntaxhighlight>في حال استدعاء الدالة<code>groupBy()‎</code> على  [[Kotlin/CharSequence/index|سلسلة الحروف]] مع تمرير معاملين <code>valueTransform</code> و <code>keySelector</code> فإنّها تُجمّع العناصر المعادة من قبل الدالة  <code>valueTransform()‎</code> مُطبّقة على كل عناصر  [[Kotlin/CharSequence/index|سلسلة الحروف]] وتربطها بالمفتاح الذي تعيده الدالة<code>keySelector()‎</code> مطبقة على على عناصر  [[Kotlin/CharSequence/index|سلسلة الحروف]] وتعيد [[Kotlin/collections/Map|قاموسًا]] حيث كل مفتاح مرتبط [[Kotlin/collections/List|بلائحة]] العناصر المقابلة.<syntaxhighlight lang="kotlin">
+
</syntaxhighlight>
inline fun <T, K> Iterable<T>.groupBy(
+
 
    keySelector: (T) -> K
+
في حال استدعاء الدالة<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>
): Map<K, List<T>>
+
 
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
+
يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
 
==القيم المٌعادة==
 
==القيم المٌعادة==
[[Kotlin/collections/Map|قاموس]].
+
القاموس <code>destination</code>.
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()groupByTo</code> مع السلاسل النصية مع تمرير معامل واحد===
+
===استخدام الدالة <code>()groupByTo</code> مع السلاسل النصية مع تمرير معاملين ===
تعرِّف الشيفرة الآتية  [[Kotlin/String|سلسلة نصية]] باسم <code>str</code>، ثمَّ تستدعي الدالة  <code>()groupByTo</code> عبرها مع تمرير دالة كوسيط، ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
+
تعرِّف الشيفرة الآتية  [[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()
print(str.groupBy { it.toByte() } )  
+
   
 +
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> عبرها مع تمرير دالتين كوسيطين، ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
+
تعرِّف الشيفرة الآتية  [[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()
print(str.groupBy ({ it.toByte() } , {it.toUpperCase()}) )
+
   
 +
str.groupByTo (map, { it.toByte() }, {it.toUpperCase()} )
 +
   
 +
print( map )
 
}
 
}
 
</syntaxhighlight>المُخرجات:<syntaxhighlight lang="kotlin">
 
</syntaxhighlight>المُخرجات:<syntaxhighlight lang="kotlin">
سطر 44: سطر 50:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
==انظر أيضًا==
 
==انظر أيضًا==
<code>[[Kotlin/collections/groupByTo|groupByTo()]]</code>‎: تضيف إلى [[Kotlin/collections/Map|القاموس]] المُمرّر عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها حيث مفاتيحه تعيدها الدالة المُمرّرة <code>keySelector</code> وقيمه لوائحُ تضم عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] (أو ناتج تمرير عناصر  [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] على الدالة <code>valueTransform</code> في حال تمريرها). 
+
<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 في حال تمريرها).

مصادر