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

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


إن كان لزوجين نفس المفتاح (key)  فالأخير هو الذي سيُضاف إلى الخريطة.
إن كان لزوجين نفس المفتاح (key)  فالأخير هو الذي سيُضاف إلى [[Kotlin/Map|القاموس]].


تحافظ الخريطة المُعادة على نفس ترتيب التكرار الخاص بالمصفوفة أو المجموعة الأصليَّة.
يحافظ [[Kotlin/Map|القاموس]]<nowiki/>المُعاد على نفس ترتيب التكرار الخاص [[Kotlin/CharSequence/index|بسلسلة الحروف]] الأصليَّة.
==البنية العامة==
==البنية العامة==
تعيد الدالة <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>.
[[Kotlin/Map|قاموس]].
==أمثلة==
==أمثلة==
===استخدام الدالة <code>()associate</code> مع القوائم ===
===استخدام الدالة <code>()associate</code> ===
تعرِّف الشيفرة الآتية قائمة باسم <code>list</code> مكونة من ثلاثة حروف باستخدام الدالة <code>()listOf</code>، ثمَّ تنشئ خريطةً باسم <code>map</code> بتمرير الدالة <code>()toMap</code> إلى <code>()associate</code>التي تحول تلك الحروف إلى زوج مكون من الحرف في الحالة الكبيرة [UpperCase] ومن القيمة العددية له) ثمَّ تطبع الناتج:<syntaxhighlight lang="kotlin">
تعرِّف الشيفرة الآتية سلسلة نصية باسم <code>str</code>، ثمَّ تنشئ [[Kotlin/Map|قاموسًا]]<nowiki/>باسم <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/append|append()]]</code>:تضم الوسائط المُمرّرة إلى الكائن الذي استُدعيت عبره، والذي ينبغي أن يكون من الصنف <code>Appendable</code>.
*الدالة <code>[[Kotlin/collections/asList|asList()]]</code>: تعيد لائحة والتي تُغلّف المصفوفة الأصليَّة.  
 
* <code>[[Kotlin/kotlin.text/all|all()]]</code>: تعيد الدالة <code>all()‎</code> القيمة <code>true</code> إن كانت كل الحروف تحقق الشرط المنطقي المُمرّر <code>predicate</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>).
* <code>[[Kotlin/kotlin.text/asSequence|asSequence()]]</code>: تنشئ كائنًا من الصنف <code>Sequence</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 الدالة  text.associate()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
[[تصنيف:Kotlin Functions]]

مراجعة 17:46، 7 يوليو 2018

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

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

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

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

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

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

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

قاموس.

أمثلة

استخدام الدالة ()associate

تعرِّف الشيفرة الآتية سلسلة نصية باسم 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}
}

انظر أيضًا

  • append():تضم الوسائط المُمرّرة إلى الكائن الذي استُدعيت عبره، والذي ينبغي أن يكون من الصنف Appendable.
  • all(): تعيد الدالة all()‎ القيمة true إن كانت كل الحروف تحقق الشرط المنطقي المُمرّر predicate
  • asSequence(): تنشئ كائنًا من الصنف Sequence والذي يُغلّف سلسلة الحروف التي استُدعيت عبرها، لأجل استعمالها في الحلقات التكرارية.

مصادر