الفرق بين المراجعتين لصفحة: «Kotlin/kotlin.text/associate»

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>text.associate()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة <code>associate()‎</code> خريطةً...'
 
مراجعة وتدقيق.
 
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>text.associate()‎</code> في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>CharSequence.associate()‎</code> في Kotlin}}</noinclude>
تعيد الدالة <code>associate()‎</code> خريطةً (map) تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير عناصر المصفوفة أو المجموعة ([[Kotlin/collections|Collection]]) إلى الدالة <code>()transform</code>.  
تعيد الدالة <code>associate()‎</code> [[Kotlin/collections/Map|خريطة]] (map) تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير محارف [[Kotlin/CharSequence|سلسلة المحارف]] التي استُدعيت معها إلى الدالة الممررة إليها.  


إن كان لزوجين نفس المفتاح (key) فالأخير هو الذي سيُضاف إلى الخريطة.
إن كان لزوجين نفس المفتاح (key)، فالأخير هو الذي سيُضاف إلى [[Kotlin/collections/Map|الخريطة]].
 
تحافظ الخريطة المُعادة على نفس ترتيب التكرار الخاص [[Kotlin/CharSequence|بسلسلة المحارف]] الأصليَّة.


تحافظ الخريطة المُعادة على نفس ترتيب التكرار الخاص بالمصفوفة أو المجموعة الأصليَّة.
==البنية العامة==
==البنية العامة==
تعيد الدالة <code>associate()‎</code> خريطةً (map) تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير عناصر مصفوفةٍ إلى الدالة <code>()transform</code>.<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
inline fun <T, K, V> Array<out T>.associate(
inline fun <K, V> CharSequence.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>
     transform: (Char) -> Pair<K, V>
): Map<K, V>
): Map<K, V>
</syntaxhighlight>تعيد الدالة <code>associate()‎</code> خريطةً (map) تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير عناصر مجموعةٍ ([[Kotlin/collections|Collection]]) إلى الدالة <code>transform</code>.<syntaxhighlight lang="kotlin">
</syntaxhighlight>وجود الكلمة المفتاحية <code>inline</code> يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]]).
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>.
تعاد خريطةً تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير محارف [[Kotlin/CharSequence|سلسلة المحارف]] المعطاة إلى الدالة <code>()transform</code>.
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()associate</code> مع القوائم ===
تعرِّف الشيفرة التالية سلسلة من المحارف باسم <code>str</code> ثمَّ تنشأ [[Kotlin/Map|خريطةً]] باسم <code>map</code> بتمرير الدالة <code>()toMap</code> إلى <code>()associate</code> التي تحول محارف تلك السلسلة إلى زوج مكون من المحرف في الحالة الكبيرة (UpperCase) ومن قيمته العددية المقابلة له:<syntaxhighlight lang="kotlin">
تعرِّف الشيفرة الآتية قائمة باسم <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 list = listOf('a', 'b', 'c')
     val str = "hsoub"
     val toMap: (Char) -> Pair<Char, Int> = {
     val toMap: (Char) -> Pair<Char, Int> = {
         Pair(it.toUpperCase(), it.toInt())
         Pair(it.toUpperCase(), it.toInt())
     }
     }
     val map = list.associate(toMap)
     val map = str.associate(toMap)


     println(map) // {A=97, B=98, C=99}
     println(map) // {H=104, S=115, O=111, U=117, B=98}
}
}
</syntaxhighlight>
</syntaxhighlight>
==انظر أيضًا==
==انظر أيضًا==
*الدالة <code>[[Kotlin/collections/associateBy|associateBy()]]</code>: تعيد خريطةً (map) تحتوي على عناصر المصفوفة أو المجموعة المعطاة مُفهرسة بناتج تمرير هذه العناصر إلى الدالة <code>keySelector</code>.  
*الدالة <code>[[Kotlin/kotlin.text/associateTo|associateTo()]]</code>: تشبه الدالة <code>associate()‎</code> تمامًا باستثناء أنها تضيف الناتج الذي تعيده إلى خريطة موجودة مسبقًا.
*الدالة <code>[[Kotlin/collections/asList|asList()]]</code>: تعيد لائحة والتي تُغلّف المصفوفة الأصليَّة.  
*الدالة <code>[[Kotlin/kotlin.text/associateBy|associateBy()]]</code>: تعيد [[Kotlin/collections/Map|خريطةً]] (map) مكونة من الأزواج "مفتاح/قيمة"، إذ يكون المفتاح (key) هو الناتج الذي تعيده الدالة <code>keySelector</code> الممررة إليها وتكون القيمة (value) المقابلة لذلك المفتاح هي إمَّا محارف [[Kotlin/CharSequence|سلسلة المحارف]] المعطاة أو الناتج الذي تعيده الدالة <code>valueTransform</code> الممررة. 
 
*الدالة <code>[[Kotlin/kotlin.text/asIterable|asIterable()]]</code>: تنشئ نسخةً من الواجهة <code>[[Kotlin/collections/Iterable|Iterable]]</code> التي تغلّف [[Kotlin/CharSequence|سلسلة المحارف]] التي استُدعيت معها لاستعمالها في الحلقات التكرارية، إذ تعيد محارفها عندما تُستخدَم في حلقات التكرار (مثل <code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</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 الدالة  text.associate()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
*[http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/associate.html صفحة الدالة CharSequence.associate()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Text]]
[[تصنيف:Kotlin CharSequence]]

المراجعة الحالية بتاريخ 06:54، 2 سبتمبر 2018

تعيد الدالة associate()‎ خريطة (map) تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير محارف سلسلة المحارف التي استُدعيت معها إلى الدالة الممررة إليها.

إن كان لزوجين نفس المفتاح (key)، فالأخير هو الذي سيُضاف إلى الخريطة.

تحافظ الخريطة المُعادة على نفس ترتيب التكرار الخاص بسلسلة المحارف الأصليَّة.

البنية العامة

inline fun <K, V> CharSequence.associate(
    transform: (Char) -> Pair<K, V>
): Map<K, V>

وجود الكلمة المفتاحية inline يدل على أنَّ هذه الدالة مباشرة (للمزيد من التفاصيل راجع توثيق الدوال المباشرة (inline functions)).

المعاملات

transform

دالةٌ يمرر إليها كل محرف من محارف سلسلة المحارف المعطاة وتعيد خريطة تحتوي أزواجًا من "مفتاح/قيمة".

القيم المعادة

تعاد خريطةً تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير محارف سلسلة المحارف المعطاة إلى الدالة ()transform.

أمثلة

تعرِّف الشيفرة التالية سلسلة من المحارف باسم str ثمَّ تنشأ خريطةً باسم map بتمرير الدالة ()toMap إلى ()associate التي تحول محارف تلك السلسلة إلى زوج مكون من المحرف في الحالة الكبيرة (UpperCase) ومن قيمته العددية المقابلة له:

fun main(args: Array<String>) {
    val str = "hsoub"
    val toMap: (Char) -> Pair<Char, Int> = {
        Pair(it.toUpperCase(), it.toInt())
    }
    val map = str.associate(toMap)

    println(map) // {H=104, S=115, O=111, U=117, B=98}
}

انظر أيضًا

  • الدالة associateTo()‎: تشبه الدالة associate()‎ تمامًا باستثناء أنها تضيف الناتج الذي تعيده إلى خريطة موجودة مسبقًا.
  • الدالة associateBy(): تعيد خريطةً (map) مكونة من الأزواج "مفتاح/قيمة"، إذ يكون المفتاح (key) هو الناتج الذي تعيده الدالة keySelector الممررة إليها وتكون القيمة (value) المقابلة لذلك المفتاح هي إمَّا محارف سلسلة المحارف المعطاة أو الناتج الذي تعيده الدالة valueTransform الممررة. 
  • الدالة asIterable(): تنشئ نسخةً من الواجهة Iterable التي تغلّف سلسلة المحارف التي استُدعيت معها لاستعمالها في الحلقات التكرارية، إذ تعيد محارفها عندما تُستخدَم في حلقات التكرار (مثل for).

مصادر