الفرق بين المراجعتين لصفحة: «Kotlin/collections/groupByTo»
لا ملخص تعديل |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: الدالة <code>groupByTo()</code> في لغة Kotlin}}</noinclude> | <noinclude>{{DISPLAYTITLE: الدالة <code>groupByTo()</code> في لغة Kotlin}}</noinclude> | ||
يخت | |||
القاموس | تجمّع الدالة<code>groupByTo()</code> عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها وتضيفها إلى [[Kotlin/collections/Map|القاموس]].المُمرّر <code>destination</code> حيث مفاتيحه تعيدها الدالة الممرّرة <code>keySelector()</code> مُطبّقة على كل عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]]، وقيمُه [[Kotlin/collections/List|لوائح]] تضم العناصر المقابلة، وفي حال تمرير معامل ثالث <code>valueTransform</code> فإنّ القيم ستكون [[Kotlin/collections/List|لوائح]] تضم ناتج تطبيق الدالة <code>valueTransform</code> على العناصر المقابلة . ثم تعيد القاموس<code>destination.</code> | ||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="kotlin"> | <syntaxhighlight lang="kotlin"> | ||
سطر 42: | سطر 42: | ||
): M | ): M | ||
</syntaxhighlight>في حال استدعاء الدالة<code> | </syntaxhighlight>في حال استدعاء الدالة<code>groupByTo()</code> على [[Kotlin/Array|المصفوفات]] مع تمرير معاملين <code>destination</code> و<code>keySelector</code> فإنّها تُجمّع عناصر [[Kotlin/Array|المصفوفة]] الأصلية وتضيفها إلى [[Kotlin/collections/Map|القاموس]].المُمرّر <code>destination</code> حيث مفاتيحه تعيدها الدالة الممرّرة <code>keySelector()</code> مُطبّقة على كل عناصر [[Kotlin/Array|المصفوفة]] وقيمه [[Kotlin/collections/List|لوائح]] تضم العناصر المقابلة. ثم تعيد القاموس<code>destination.</code><syntaxhighlight lang="kotlin"> | ||
inline fun <T, K, V, M : MutableMap<in K, MutableList<V>>> Array<out T>.groupByTo( | inline fun <T, K, V, M : MutableMap<in K, MutableList<V>>> Array<out T>.groupByTo( | ||
destination: M, | destination: M, | ||
سطر 89: | سطر 89: | ||
): M | ): M | ||
</syntaxhighlight>في حال استدعاء الدالة<code> | </syntaxhighlight>في حال استدعاء الدالة<code>groupByTo()</code> على [[Kotlin/Array|المصفوفات]] مع تمرير ثلاث معاملات <code>destination</code> و <code>valueTransform</code> و <code>keySelector</code> فإنّها تُجمّع العناصر المعادة من قبل الدالة <code>valueTransform()</code> مُطبّقة على كل عناصر [[Kotlin/Array|المصفوفة]] وتربطها بالمفتاح الذي تعيده الدالة<code>keySelector()</code> مطبقة على على عناصر [[Kotlin/Array|المصفوفة]] وتضيفها إلى [[Kotlin/collections/Map|القاموس]] المُمرّر <code>destination</code> حيث كل مفتاح مرتبط [[Kotlin/collections/List|بلائحة]] العناصر المقابلة. ثم تعيد [[Kotlin/collections/Map|القاموس]] <code>destination.</code><syntaxhighlight lang="kotlin"> | ||
inline fun <T, K> Iterable<T>.groupBy( | inline fun <T, K> Iterable<T>.groupBy( | ||
keySelector: (T) -> K | keySelector: (T) -> K | ||
): Map<K, List<T>> | ): Map<K, List<T>> | ||
</syntaxhighlight>في حال استدعاء الدالة<code> | </syntaxhighlight>في حال استدعاء الدالة<code>groupByTo()</code> على [[Kotlin/collections|المجموعات]] مع تمرير معاملين <code>destination</code> و<code>keySelector</code> فإنّها تُجمّع عناصر [[Kotlin/collections|المجموعة]] الأصلية وتضيفها إلى [[Kotlin/collections/Map|القاموس]].المُمرّر <code>destination</code> حيث مفاتيحه تعيدها الدالة الممرّرة <code>keySelector()</code> مُطبّقة على كل عناصر [[Kotlin/collections|المجموعة]] وقيمه [[Kotlin/collections/List|لوائح]] تضم العناصر المقابلة. ثم تعيد القاموس<code>destination.</code><syntaxhighlight lang="kotlin"> | ||
inline fun <T, K, V> Iterable<T>.groupBy( | inline fun <T, K, V> Iterable<T>.groupBy( | ||
keySelector: (T) -> K, | keySelector: (T) -> K, | ||
valueTransform: (T) -> V | valueTransform: (T) -> V | ||
): Map<K, List<V>> | ): Map<K, List<V>> | ||
</syntaxhighlight>في حال استدعاء الدالة<code> | </syntaxhighlight>في حال استدعاء الدالة<code>groupByTo()</code> على [[Kotlin/collections|المجموعات]] مع تمرير ثلاث معاملات <code>destination</code> و <code>valueTransform</code> و <code>keySelector</code> فإنّها تُجمّع العناصر المعادة من قبل الدالة <code>valueTransform()</code> مُطبّقة على كل عناصر [[Kotlin/collections|المجموعة]] وتربطها بالمفتاح الذي تعيده الدالة<code>keySelector()</code> مطبقة على على عناصر [[Kotlin/collections|المجموعة]] وتضيفها إلى [[Kotlin/collections/Map|القاموس]] المُمرّر <code>destination</code> حيث كل مفتاح مرتبط [[Kotlin/collections/List|بلائحة]] العناصر المقابلة. ثم تعيد [[Kotlin/collections/Map|القاموس]] <code>destination</code>. | ||
يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]]. | يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]]. | ||
==القيم المٌعادة== | ==القيم المٌعادة== | ||
[[Kotlin/collections/Map| | [[Kotlin/collections/Map|القاموس]] <code>destination</code> المُمرّر إلى الدالة<code>()groupByTo</code>. | ||
==أمثلة== | ==أمثلة== | ||
===استخدام الدالة <code>()groupByTo</code> مع المصفوفات مع تمرير | ===استخدام الدالة <code>()groupByTo</code> مع المصفوفات مع تمرير معاملين=== | ||
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code> مكونة من ست سلاسل نصية باستخدام الدالة <code>()arrayOf</code>، ثم تستخدم الدالة <code>()groupByTo</code> على <code>array</code> بتمرير | تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code> مكونة من ست [[Kotlin/collections/String|سلاسل نصية]] باستخدام الدالة <code>()arrayOf</code>، ثم تُنشئ [[Kotlin/collections/Map|قاموسًا]] فارغًا باسم <code>map</code> باستخدام الدالة <code>()mutableMapOf</code>، ثم تستخدم الدالة <code>()groupByTo</code> على <code>array</code> بتمرير [[Kotlin/collections/Map|القاموس]] <code>map</code> و دالة تعيد طول [[Kotlin/collections/String|السلسلة النصية]] المُمرّرة، ثم تطبع [[Kotlin/collections/Map|القاموس]] <code>map</code>:<syntaxhighlight lang="kotlin"> | ||
fun main(args: Array<String>) { | fun main(args: Array<String>) { | ||
val array = arrayOf("a", "abc", "ab", "def","avde" ,"abcd") | val array = arrayOf("a", "abc", "ab", "def","avde" ,"abcd") | ||
val map: MutableMap<Int, MutableList<String>> = mutableMapOf() | val map: MutableMap<Int, MutableList<String>> = mutableMapOf() | ||
array.groupByTo ( map, { it.length }) | |||
print(map) // {1=[a], 3=[abc, def], 2=[ab], 4=[avde, abcd]} | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===استخدام الدالة <code>()groupByTo</code> مع المصفوفات مع تمرير | ===استخدام الدالة <code>()groupByTo</code> مع المصفوفات مع تمرير ثلاث معاملات=== | ||
تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code> مكونة من ست سلاسل نصية باستخدام الدالة <code>()arrayOf</code>، ثم | تعرف الشيفرة الآتية <nowiki/>[[Kotlin/Array|مصفوفة]] باسم <code>array</code> مكونة من ست [[Kotlin/collections/String|سلاسل نصية]] باستخدام الدالة <code>()arrayOf</code>، ثم تُنشئ [[Kotlin/collections/Map|قاموسًا]] فارغًا باسم <code>map</code> باستخدام الدالة <code>()mutableMapOf</code>، ثم تستدعي الدالة <code>()groupByTo</code> على <code>array</code> بتمرير [[Kotlin/collections/Map|القاموس]] <code>map</code> و دالة تعيد طول [[Kotlin/collections/String|السلسلة النصية]] المُمرّرة ودالة تحوّل [[Kotlin/collections/String|السلاسل النصية]] إلى [[Kotlin/collections/String|سلاسل نصية]] ذات حروف كبيرة ، ثم تطبع [[Kotlin/collections/Map|القاموس]] <code>map</code>:<syntaxhighlight lang="kotlin"> | ||
fun main(args: Array<String>) { | 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]} | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
<code>[[Kotlin/collections/groupByTo| | <code>[[Kotlin/collections/groupByTo|groupBy()]]</code>: تعيد [[Kotlin/collections/Map|قاموسًا]] يُجمّع عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] التي استُدعيت عبرها حيث مفاتيحه تعيدها الدالة المُمرّرة <code>keySelector</code> وقيمه لوائحُ تضم عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] (أو ناتج تمرير عناصر [[Kotlin/Array|المصفوفة]] أو [[Kotlin/collections|المجموعة]] على الدالة <code>valueTransform</code> في حال تمريرها). | ||
==مصادر== | ==مصادر== | ||
[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/group-by-to.html الدالة groupByTo() في التوثيق الرسمي للمكتبة القياسية في لغة Kotlin] | [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/group-by-to.html الدالة groupByTo() في التوثيق الرسمي للمكتبة القياسية في لغة Kotlin] | ||
[[تصنيف:Kotlin]] | [[تصنيف:Kotlin]] | ||
[[تصنيف:Kotlin Functions]] | [[تصنيف:Kotlin Functions]] |
مراجعة 18:38، 19 مايو 2018
يخت
تجمّع الدالةgroupByTo()
عناصر المصفوفة أو المجموعة التي استُدعيت عبرها وتضيفها إلى القاموس.المُمرّر 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
.
أمثلة
استخدام الدالة ()groupByTo
مع المصفوفات مع تمرير معاملين
تعرف الشيفرة الآتية مصفوفة باسم 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 })
print(map) // {1=[a], 3=[abc, def], 2=[ab], 4=[avde, abcd]}
}
استخدام الدالة ()groupByTo
مع المصفوفات مع تمرير ثلاث معاملات
تعرف الشيفرة الآتية مصفوفة باسم 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
في حال تمريرها).
مصادر
الدالة groupByTo() في التوثيق الرسمي للمكتبة القياسية في لغة Kotlin