الفرق بين المراجعتين لصفحة: «Kotlin/collections/associateBy»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>associateBy()</code> في لغة Kotlin}}</noinclude> تُنشئ الدالة <code>associateBy()</code> نسخة م...' |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: الدالة <code>associateBy()</code> في لغة Kotlin}}</noinclude> | <noinclude>{{DISPLAYTITLE: الدالة <code>associateBy()</code> في لغة Kotlin}}</noinclude> | ||
تعيد الدالة <code>associateBy()</code> قاموسًا (map) يحتوي ناتج تمرير عناصر المصفوفة أو المجموعة (<code>[[Kotlin/collections|Collection]]</code>) إلى الدالة <code>valueTransform</code> مُفهرسة بناتج تمرير عناصر المصفوفة أو المجموعة إلى الدالة <code>keySelector</code>. | |||
ان كان لعنصرين نفس المفتاح (key) بعد تطبيق الدالة<code>keySelector</code> فإن الأخير هو الذي سيُضاف إلى القاموس. | |||
القاموس المُعاد يحافظ على نفس ترتيب التكرار الخاص بالمصفوفة أو المجموعة الأصلية. | |||
==البنية العامة== | ==البنية العامة== | ||
في حال استدعاء الدالة <code>associateBy()</code>عبر مصفوفة فستعيد | في حال استدعاء الدالة <code>associateBy()</code>عبر مصفوفة فستعيد قاموسًا (map) يحتوي عناصر المصفوفة مُفهرسة بناتج تمرير عناصر المصفوفة إلى الدالة <code>keySelector:</code><syntaxhighlight lang="kotlin"> | ||
fun <T> Array<out T>. | inline fun <T, K> Array<out T>.associateBy(keySelector: (T) -> K): Map<K, T> | ||
fun ByteArray. | inline fun <K> ByteArray.associateBy(keySelector: (Byte) -> K): Map<K, Byte> | ||
fun ShortArray. | inline fun <K> ShortArray.associateBy(keySelector: (Short) -> K): Map<K, Short> | ||
fun IntArray. | inline fun <K> IntArray.associateBy(keySelector: (Int) -> K): Map<K, Int> | ||
fun LongArray. | inline fun <K> LongArray.associateBy(keySelector: (Long) -> K): Map<K, Long> | ||
fun FloatArray. | inline fun <K> FloatArray.associateBy(keySelector: (Float) -> K): Map<K, Float> | ||
fun DoubleArray. | inline fun <K> DoubleArray.associateBy(keySelector: (Double) -> K): Map<K, Double> | ||
fun BooleanArray. | inline fun <K> BooleanArray.associateBy(keySelector: (Boolean) -> K): Map<K, Boolean> | ||
fun CharArray. | inline fun <K> CharArray.associateBy(keySelector: (Char) -> K): Map<K, Char> | ||
</syntaxhighlight> | </syntaxhighlight>في حال استدعاء الدالة <code>associateBy()</code>عبر مصفوفة فستعيد قاموسًا (map) يحتوي ناتج تمرير عناصر المصفوفة إلى الدالة <code>valueTransform</code> مُفهرسة بناتج تمرير عناصر المصفوفة إلى الدالة <code>keySelector:</code><syntaxhighlight lang="kotlin"> | ||
fun <T> Iterable<T>. | inline fun <T, K, V> Array<out T>.associateBy( | ||
</syntaxhighlight> | keySelector: (T) -> K, | ||
fun <K, V> | valueTransform: (T) -> V | ||
): Map<K, V> | |||
inline fun <K, V> ByteArray.associateBy( | |||
keySelector: (Byte) -> K, | |||
valueTransform: (Byte) -> V | |||
): Map<K, V> | |||
inline fun <K, V> ShortArray.associateBy( | |||
keySelector: (Short) -> K, | |||
valueTransform: (Short) -> V | |||
): Map<K, V> | |||
inline fun <K, V> IntArray.associateBy( | |||
keySelector: (Int) -> K, | |||
valueTransform: (Int) -> V | |||
): Map<K, V> | |||
inline fun <K, V> LongArray.associateBy( | |||
keySelector: (Long) -> K, | |||
valueTransform: (Long) -> V | |||
): Map<K, V> | |||
inline fun <K, V> FloatArray.associateBy( | |||
keySelector: (Float) -> K, | |||
valueTransform: (Float) -> V | |||
): Map<K, V> | |||
inline fun <K, V> DoubleArray.associateBy( | |||
keySelector: (Double) -> K, | |||
valueTransform: (Double) -> V | |||
): Map<K, V> | |||
inline fun <K, V> BooleanArray.associateBy( | |||
keySelector: (Boolean) -> K, | |||
valueTransform: (Boolean) -> V | |||
): Map<K, V> | |||
inline fun <K, V> CharArray.associateBy( | |||
keySelector: (Char) -> K, | |||
valueTransform: (Char) -> V | |||
): Map<K, V> | |||
</syntaxhighlight>في حال استدعاء الدالة <code>associateBy()</code>عبر مجموعة (<code>[[Kotlin/collections|Collection]]</code>) فستعيد قاموسًا (map) يحتوي عناصر المجموعة مُفهرسة بناتج تمرير عناصر المجموعة إلى الدالة <code>keySelector:</code><syntaxhighlight lang="kotlin"> | |||
inline fun <T, K> Iterable<T>.associateBy(keySelector: (T) -> K): Map<K, T> | |||
</syntaxhighlight>في حال استدعاء الدالة <code>associateBy()</code>عبر مجموعة (<code>[[Kotlin/collections|Collection]]</code>) فستعيد قاموسًا (map) يحتوي ناتج تمرير عناصر المجموعة (<code>[[Kotlin/collections|Collection]]</code>) إلى الدالة <code>valueTransform</code> مُفهرسة بناتج تمرير عناصر المجموعة إلى الدالة <code>keySelector:</code><syntaxhighlight lang="kotlin"> | |||
inline fun <T, K, V> Iterable<T>.associateBy( | |||
keySelector: (T) -> K, | |||
valueTransform: (T) -> V | |||
): Map<K, V> | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==القيم المعادة== | ==القيم المعادة== | ||
قاموس. (انظر شرح الدالة أعلاه لمزيد من التفاصيل) | |||
==أمثلة== | ==أمثلة== | ||
===استخدام الدالة <code>()associateBy</code> مع | ===استخدام الدالة <code>()associateBy</code> مع اللوائح بتمرير دالة واحدة=== | ||
تعرف الشيفرة الآتية | تعرف الشيفرة الآتية لائحة باسم <code>list</code> مكونة من ثلاثة أحرف باستخدام الدالة <code>()listOf</code>، ثم تنشئ قاموسًا باسم <code>map</code> بتمرير الدالة <code>()upper</code> (التي تحول الحروف إلى الحالة UpperCase) إلى<code>()associateBy</code> ثم تطبع الناتج:<syntaxhighlight lang="kotlin"> | ||
fun main(args: Array<String>) { | fun main(args: Array<String>) { | ||
val | val list = listOf('a','b','c') | ||
val | val upper: (Char) -> Char = {it.toUpperCase()} | ||
val map = list.associateBy(upper) | |||
println( | println(map) // {A=a, B=b, C=c} | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===استخدام الدالة <code>()associateBy</code> مع اللوائح=== | ===استخدام الدالة <code>()associateBy</code> مع اللوائح بتمرير دالتين=== | ||
تعرف الشيفرة الآتية لائحة باسم <code> | تعرف الشيفرة الآتية لائحة باسم <code>list</code> مكونة من ثلاثة أحرف باستخدام الدالة <code>()listOf</code>، ثم تنشئ قاموسًا باسم <code>map</code> بتمرير الدالة <code>()upper</code> (التي تحول الحروف إلى الحالة UpperCase) والدالة<code>()multr</code> (التي تحول الحروف إلى عدد) إلى<code>()associateBy</code> ثم تطبع الناتج:<syntaxhighlight lang="kotlin"> | ||
fun main(args: Array<String>) { | fun main(args: Array<String>) { | ||
val | val list = listOf('a','b','c') | ||
val | val upper: (Char) -> Char = {it.toUpperCase()} | ||
val mult: (Char) -> Int = {it.toInt()} | |||
val map = list.associateBy(upper, mult) | |||
println(map) // {A=97, B=98, C=99} | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
*<code>[[Kotlin/collections/associateBy|associateBy()]]</code>: تعيد قاموسًا (map). | |||
*<code>[[Kotlin/collections/asList|asList()]]</code>: تعيد لائحة والتي تُغلّف المصفوفة الاصلية. | *<code>[[Kotlin/collections/asList|asList()]]</code>: تعيد لائحة والتي تُغلّف المصفوفة الاصلية. | ||
سطر 44: | سطر 91: | ||
==مصادر== | ==مصادر== | ||
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/associate-by.html الدالة associate() في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.] | |||
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/ | |||
[[تصنيف:Kotlin]] | [[تصنيف:Kotlin]] | ||
[[تصنيف:Kotlin Functions]] | [[تصنيف:Kotlin Functions]] |
مراجعة 18:37، 10 مايو 2018
تعيد الدالة associateBy()
قاموسًا (map) يحتوي ناتج تمرير عناصر المصفوفة أو المجموعة (Collection
) إلى الدالة valueTransform
مُفهرسة بناتج تمرير عناصر المصفوفة أو المجموعة إلى الدالة keySelector
.
ان كان لعنصرين نفس المفتاح (key) بعد تطبيق الدالةkeySelector
فإن الأخير هو الذي سيُضاف إلى القاموس.
القاموس المُعاد يحافظ على نفس ترتيب التكرار الخاص بالمصفوفة أو المجموعة الأصلية.
البنية العامة
في حال استدعاء الدالة associateBy()
عبر مصفوفة فستعيد قاموسًا (map) يحتوي عناصر المصفوفة مُفهرسة بناتج تمرير عناصر المصفوفة إلى الدالة keySelector:
inline fun <T, K> Array<out T>.associateBy(keySelector: (T) -> K): Map<K, T>
inline fun <K> ByteArray.associateBy(keySelector: (Byte) -> K): Map<K, Byte>
inline fun <K> ShortArray.associateBy(keySelector: (Short) -> K): Map<K, Short>
inline fun <K> IntArray.associateBy(keySelector: (Int) -> K): Map<K, Int>
inline fun <K> LongArray.associateBy(keySelector: (Long) -> K): Map<K, Long>
inline fun <K> FloatArray.associateBy(keySelector: (Float) -> K): Map<K, Float>
inline fun <K> DoubleArray.associateBy(keySelector: (Double) -> K): Map<K, Double>
inline fun <K> BooleanArray.associateBy(keySelector: (Boolean) -> K): Map<K, Boolean>
inline fun <K> CharArray.associateBy(keySelector: (Char) -> K): Map<K, Char>
في حال استدعاء الدالة associateBy()
عبر مصفوفة فستعيد قاموسًا (map) يحتوي ناتج تمرير عناصر المصفوفة إلى الدالة valueTransform
مُفهرسة بناتج تمرير عناصر المصفوفة إلى الدالة keySelector:
inline fun <T, K, V> Array<out T>.associateBy(
keySelector: (T) -> K,
valueTransform: (T) -> V
): Map<K, V>
inline fun <K, V> ByteArray.associateBy(
keySelector: (Byte) -> K,
valueTransform: (Byte) -> V
): Map<K, V>
inline fun <K, V> ShortArray.associateBy(
keySelector: (Short) -> K,
valueTransform: (Short) -> V
): Map<K, V>
inline fun <K, V> IntArray.associateBy(
keySelector: (Int) -> K,
valueTransform: (Int) -> V
): Map<K, V>
inline fun <K, V> LongArray.associateBy(
keySelector: (Long) -> K,
valueTransform: (Long) -> V
): Map<K, V>
inline fun <K, V> FloatArray.associateBy(
keySelector: (Float) -> K,
valueTransform: (Float) -> V
): Map<K, V>
inline fun <K, V> DoubleArray.associateBy(
keySelector: (Double) -> K,
valueTransform: (Double) -> V
): Map<K, V>
inline fun <K, V> BooleanArray.associateBy(
keySelector: (Boolean) -> K,
valueTransform: (Boolean) -> V
): Map<K, V>
inline fun <K, V> CharArray.associateBy(
keySelector: (Char) -> K,
valueTransform: (Char) -> V
): Map<K, V>
في حال استدعاء الدالة associateBy()
عبر مجموعة (Collection
) فستعيد قاموسًا (map) يحتوي عناصر المجموعة مُفهرسة بناتج تمرير عناصر المجموعة إلى الدالة keySelector:
inline fun <T, K> Iterable<T>.associateBy(keySelector: (T) -> K): Map<K, T>
في حال استدعاء الدالة associateBy()
عبر مجموعة (Collection
) فستعيد قاموسًا (map) يحتوي ناتج تمرير عناصر المجموعة (Collection
) إلى الدالة valueTransform
مُفهرسة بناتج تمرير عناصر المجموعة إلى الدالة keySelector:
inline fun <T, K, V> Iterable<T>.associateBy(
keySelector: (T) -> K,
valueTransform: (T) -> V
): Map<K, V>
القيم المعادة
قاموس. (انظر شرح الدالة أعلاه لمزيد من التفاصيل)
أمثلة
استخدام الدالة ()associateBy
مع اللوائح بتمرير دالة واحدة
تعرف الشيفرة الآتية لائحة باسم list
مكونة من ثلاثة أحرف باستخدام الدالة ()listOf
، ثم تنشئ قاموسًا باسم map
بتمرير الدالة ()upper
(التي تحول الحروف إلى الحالة UpperCase) إلى()associateBy
ثم تطبع الناتج:
fun main(args: Array<String>) {
val list = listOf('a','b','c')
val upper: (Char) -> Char = {it.toUpperCase()}
val map = list.associateBy(upper)
println(map) // {A=a, B=b, C=c}
}
استخدام الدالة ()associateBy
مع اللوائح بتمرير دالتين
تعرف الشيفرة الآتية لائحة باسم list
مكونة من ثلاثة أحرف باستخدام الدالة ()listOf
، ثم تنشئ قاموسًا باسم map
بتمرير الدالة ()upper
(التي تحول الحروف إلى الحالة UpperCase) والدالة()multr
(التي تحول الحروف إلى عدد) إلى()associateBy
ثم تطبع الناتج:
fun main(args: Array<String>) {
val list = listOf('a','b','c')
val upper: (Char) -> Char = {it.toUpperCase()}
val mult: (Char) -> Int = {it.toInt()}
val map = list.associateBy(upper, mult)
println(map) // {A=97, B=98, C=99}
}
انظر أيضًا
associateBy()
: تعيد قاموسًا (map).asList()
: تعيد لائحة والتي تُغلّف المصفوفة الاصلية.
asIterable()
: تُنشئ نسخة تكرارية (Iterable instance) والتي تُغلّف المصفوفة الاصلية وتعيد عناصرها عندما تُستخدم في حلقات التكرار (مثلfor
).