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