الدالة CharSequence.associateBy()
في Kotlin
تعيد الدالة associateBy()
خريطةً (map) مكونة من الأزواج "مفتاح/قيمة"، إذ يكون المفتاح (key) هو الناتج الذي تعيده الدالة keySelector
الممررة إليها وتكون القيمة (value) المقابلة لذلك المفتاح هي إمَّا محارف سلسلة المحارف المعطاة أو الناتج الذي تعيده الدالة valueTransform
الممررة.
إن كان لزوجين نفس المفتاح (key)، فالأخير هو الذي سيُضاف إلى الخريطة.
تحافظ الخريطة المُعادة على نفس ترتيب التكرار الخاص بسلسلة المحارف الأصليَّة.
البنية العامة
inline fun <K> CharSequence.associateBy(
keySelector: (Char) -> K
): Map<K, Char>
inline fun <K, V> CharSequence.associateBy(
keySelector: (Char) -> K,
valueTransform: (Char) -> V
): Map<K, V> (source)
وجود الكلمة المفتاحية inline
يدل على أن هذه الدالة مباشرة (للمزيد من التفاصيل راجع توثيق الدوال المباشرة (inline functions)).
المعاملات
keySelector
دالةٌ يمرر إليها كل محرف من محارف سلسلة المحارف المعطاة على حدة وتعيد المفتاح المقابل لذلك المحرف المراد وضعه في الخريطة.
valueTransform
دالةٌ يمرر إليها كل محرف من محارف سلسلة المحارف المعطاة على حدة وتعيد القيمة المقابلة لذلك المحرف المراد وضعها في الخريطة.
القيم المعادة
تعاد خريطة مكونة من الأزواج "مفتاح/قيمة"، إذ يكون المفتاح (key) هو الناتج الذي تعيده الدالة keySelector
وتكون القيمة (value) المقابلة لذلك المفتاح هي إمَّا محارف سلسلة المحارف المعطاة أو الناتج الذي تعيده الدالة valueTransform
.
أمثلة
تعرِّف الشيفرة التالية سلسلة نصية باسم str
ثمَّ تنشأ خريطة باسم map
بتمرير الدالة ()upper
(التي تحول الحروف إلى الحالة الكبيرة [UpperCase]) إلى ()associateBy
ثم تطبع الناتج:
fun main(args: Array<String>) {
val str = "hsoub"
val upper: (Char) -> Char = {
it.toUpperCase()
}
val map = str.associateBy(upper)
println(map) // {H=h, S=s, O=o, U=u, B=b}
}
انظر أيضًا
- الدالة
associateByTo()
: تشبه الدالةassociateBy()
تمامًا باستثناء أنها تضيف الناتج الذي تعيده إلى خريطة موجودة مسبقًا.
- الدالة
associate()
: تعيد خريطة (map) تحوي أزواجًا من "مفتاح/قيمة" ناتجة عن تمرير محارف سلسلة المحارف التي استُدعيت معها إلى الدالة الممررة إليها.
- الدالة
asIterable()
: تنشئ نسخةً من الواجهةIterable
التي تغلّف سلسلة المحارف التي استُدعيت معها لاستعمالها في الحلقات التكرارية، إذ تعيد محارفها عندما تُستخدَم في حلقات التكرار (مثلfor
).