الفرق بين المراجعتين ل"Kotlin/collections/associate"
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>associateBy()</code> في لغة Kotlin}}</noinclude> تُنشئ الدالة <code>associateBy()</code> نسخة م...') |
جميل-بيلوني (نقاش | مساهمات) |
||
(8 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة) | |||
سطر 1: | سطر 1: | ||
− | <noinclude>{{DISPLAYTITLE: الدالة <code> | + | <noinclude>{{DISPLAYTITLE: الدالة <code>associate()</code> في لغة Kotlin}}</noinclude> |
− | + | تعيد الدالة <code>associate()</code> [[Kotlin/collections/Map|خريطةً]] (map) تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير عناصر المصفوفة أو المجموعة ([[Kotlin/collections|Collection]]) إلى الدالة المررة إليها. | |
+ | |||
+ | إن كان لزوجين نفس المفتاح (key) فالأخير هو الذي سيُضاف إلى الخريطة. | ||
+ | |||
+ | تحافظ الخريطة المُعادة على نفس ترتيب التكرار الخاص بالمصفوفة أو المجموعة الأصليَّة. | ||
==البنية العامة== | ==البنية العامة== | ||
− | + | تعيد الدالة <code>associate()</code> خريطةً (map) تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير عناصر مصفوفةٍ إلى الدالة <code>()transform</code>.<syntaxhighlight lang="kotlin"> | |
− | fun <T> Array<out T>. | + | inline fun <T, K, V> Array<out T>.associate( |
− | fun ByteArray. | + | transform: (T) -> Pair<K, V> |
− | fun ShortArray. | + | ): Map<K, V> |
− | fun IntArray. | + | inline fun <K, V> ByteArray.associate( |
− | fun LongArray. | + | transform: (Byte) -> Pair<K, V> |
− | fun FloatArray. | + | ): Map<K, V> |
− | fun DoubleArray. | + | inline fun <K, V> ShortArray.associate( |
− | fun BooleanArray. | + | transform: (Short) -> Pair<K, V> |
− | fun CharArray. | + | ): Map<K, V> |
− | </syntaxhighlight> | + | inline fun <K, V> IntArray.associate( |
− | fun <T> Iterable<T>. | + | transform: (Int) -> Pair<K, V> |
− | </syntaxhighlight> | + | ): 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> | ||
+ | </syntaxhighlight>تعيد الدالة <code>associate()</code> خريطةً (map) تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير عناصر مجموعةٍ ([[Kotlin/collections|Collection]]) إلى الدالة <code>transform</code>.<syntaxhighlight lang="kotlin"> | ||
+ | inline fun <T, K, V> Iterable<T>.associate( | ||
+ | transform: (T) -> Pair<K, V> | ||
+ | ): Map<K, V> | ||
+ | </syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]]). | ||
+ | |||
+ | == المعاملات == | ||
+ | |||
+ | === <code>transform</code> === | ||
+ | دالةٌ يمرر إليها كل عنصر من عناصر المصفوفة أو المجموعة المعطاة وتعيد خريطة تحتوي أزواجًا من "مفتاح/قيمة". | ||
+ | |||
==القيم المعادة== | ==القيم المعادة== | ||
− | + | خريطةً تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير عناصر مصفوفةٍ أو مجموعةٍ إلى الدالة <code>()transform</code>. | |
==أمثلة== | ==أمثلة== | ||
− | + | تعرِّف الشيفرة الآتية قائمة باسم <code>list</code> مكونة من ثلاثة حروف باستخدام الدالة <code>()listOf</code>، ثمَّ تنشئ خريطةً باسم <code>map</code> بتمرير الدالة <code>()toMap</code> إلى <code>()associate</code>التي تحول تلك الحروف إلى زوج مكون من الحرف في الحالة الكبيرة (UpperCase) ومن القيمة العددية المقابلة له:<syntaxhighlight lang="kotlin"> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
fun main(args: Array<String>) { | fun main(args: Array<String>) { | ||
− | val | + | val list = listOf('a', 'b', 'c') |
− | val | + | val toMap: (Char) -> Pair<Char, Int> = { |
+ | Pair(it.toUpperCase(), it.toInt()) | ||
+ | } | ||
+ | val map = list.associate(toMap) | ||
− | println( | + | println(map) // {A=97, B=98, C=99} |
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
− | *<code>[[Kotlin/collections/asList|asList()]]</code>: تعيد لائحة والتي تُغلّف المصفوفة | + | *الدالة <code>[[Kotlin/collections/associateBy|associateBy()]]</code>: تعيد خريطةً (map) تحتوي على عناصر المصفوفة أو المجموعة المعطاة مُفهرسة بناتج تمرير هذه العناصر إلى الدالة <code>keySelector</code>. |
+ | *الدالة <code>[[Kotlin/collections/asList|asList()]]</code>: تعيد لائحة والتي تُغلّف المصفوفة الأصليَّة. | ||
− | * <code>[[Kotlin/collections/asIterable|asIterable()]]</code>: تُنشئ نسخة | + | * الدالة <code>[[Kotlin/collections/asIterable|asIterable()]]</code>: تُنشئ نسخة تكراريَّة (Iterable instance) تُغلّف المصفوفة الأصلية وتعيد عناصرها عندما تُستخدم في حلقات التكرار (مثل <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>). |
==مصادر== | ==مصادر== | ||
− | + | *[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/associate.html صفحة الدالة associate() في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.] | |
− | *[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/ | ||
[[تصنيف:Kotlin]] | [[تصنيف:Kotlin]] | ||
− | [[تصنيف:Kotlin | + | [[تصنيف:Kotlin Function]] |
+ | [[تصنيف:Kotlin Collection]] |
المراجعة الحالية بتاريخ 07:04، 8 سبتمبر 2018
تعيد الدالة associate()
خريطةً (map) تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير عناصر المصفوفة أو المجموعة (Collection) إلى الدالة المررة إليها.
إن كان لزوجين نفس المفتاح (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)).
المعاملات
transform
دالةٌ يمرر إليها كل عنصر من عناصر المصفوفة أو المجموعة المعطاة وتعيد خريطة تحتوي أزواجًا من "مفتاح/قيمة".
القيم المعادة
خريطةً تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير عناصر مصفوفةٍ أو مجموعةٍ إلى الدالة ()transform
.
أمثلة
تعرِّف الشيفرة الآتية قائمة باسم list
مكونة من ثلاثة حروف باستخدام الدالة ()listOf
، ثمَّ تنشئ خريطةً باسم map
بتمرير الدالة ()toMap
إلى ()associate
التي تحول تلك الحروف إلى زوج مكون من الحرف في الحالة الكبيرة (UpperCase) ومن القيمة العددية المقابلة له:
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) تحتوي على عناصر المصفوفة أو المجموعة المعطاة مُفهرسة بناتج تمرير هذه العناصر إلى الدالةkeySelector
. - الدالة
asList()
: تعيد لائحة والتي تُغلّف المصفوفة الأصليَّة.
- الدالة
asIterable()
: تُنشئ نسخة تكراريَّة (Iterable instance) تُغلّف المصفوفة الأصلية وتعيد عناصرها عندما تُستخدم في حلقات التكرار (مثلfor
).