طريقة WithIndex
جزء من قسم الأساسيات في رحلة Kotlin على Coddy. الدرس 75 من 93.
عند التكرار على قائمة، غالبًا ما تحتاج إلى معرفة العنصر وموضعه أيضًا، وليس العنصر فقط. تمنحك الطريقة withIndex() كليهما في آنٍ واحد.
استدعِ withIndex() على أي قائمة للحصول على أزواج من الفهرس والقيمة:
val colors = listOf("Red", "Green", "Blue")
for ((index, color) in colors.withIndex()) {
println("$index: $color")
}
// المخرجات:
// 0: Red
// 1: Green
// 2: Blueلاحظ الصياغة داخل القوسين: (index, color). يُسمّى هذا التفكيك، إذ يفكّك الفهرس والقيمة إلى متغيرين منفصلين. يمكنك تسمية هذه المتغيرات بأي أسماء منطقية لشفرتك.
هذا الأسلوب أكثر نظافة من تتبّع فهرس يدويًا باستخدام متغيّر عدّاد. وهو مفيد بشكل خاص عندما تحتاج إلى عرض قوائم مرقّمة أو تنفيذ إجراءات مختلفة استنادًا إلى الموضع:
val tasks = listOf("Wake up", "Exercise", "Eat breakfast")
for ((i, task) in tasks.withIndex()) {
println("Step ${i + 1}: $task")
}
// المخرجات:
// الخطوة 1: Wake up
// الخطوة 2: Exercise
// الخطوة 3: Eat breakfastالتحدي
متوسطستتلقى قائمة بأسماء الطلاب كإدخال. اقرأ عدد الطلاب أولًا، ثم اقرأ كل اسم.
باستخدام withIndex()، اطبع كل طالب مع رقم ترتيبه (بدءًا من 1، وليس 0).
تنسيق الإدخال:
- السطر الأول: عدد صحيح
nيمثّل عدد الطلاب - الأسطر
nالتالية: أسماء الطلاب (سلاسل نصية)
تنسيق الإخراج:
اطبع كل طالب في سطر منفصل بالتنسيق التالي:
Rank 1: Alice
Rank 2: Bob
Rank 3: Charlieتذكّر أن withIndex() يمنحك فهارس تبدأ من 0، لذا ستحتاج إلى تعديلها لتبدأ أرقام الترتيب من 1.
جرّب بنفسك
fun main() {
// اقرأ عدد الطلاب
val n = readLine()!!.toInt()
// اقرأ أسماء الطلاب في قائمة
val students = mutableListOf<String>()
for (i in 1..n) {
students.add(readLine()!!)
}
// TODO: اكتب الكود الخاص بك أدناه
// استخدم withIndex() للتكرار عبر الطلاب وطباعة رتبتهم
// تذكر: withIndex() يعطي فهارس تبدأ من 0، لكن الرتب يجب أن تبدأ من 1
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4العوامل - الجزء الأول
العوامل الحسابيةعامل باقي القسمةالإسناد المُعزَّزعوامل المقارنةمراجعة - الرياضيات البسيطة7أساسيات الإدخال والإخراج
دالة Printlnقوالب السلاسل النصيةإدخال ReadLineتحويل النوعمراجعة - السنوات حتى التقاعدمراجعة - صواب أم خطأ10الدوال
تعريف دالةالمعاملات والوسائطالقيم المُعادةالوسائط المُسمّاةالقيم الافتراضيةالدوال ذات التعبير الواحدمراجعة - دالة سيغمامراجعة - دالة التحقق13التكرار على التسلسلات
التكرار على العناصرطريقة WithIndexالتكرار على السلاسل النصية - الجزء 1التكرار على السلاسل النصية - الجزء 2مراجعة - الأحرف المفهرسة2المتغيرات
val مقابل varاستنتاج النوعالأعدادالسلسلة النصيةالقيمة المنطقيةاصطلاحات التسميةمراجعة - تهيئة المتغيرات5المعاملات الجزء 2
المعاملات المنطقية الجزء 1المعاملات المنطقية الجزء 2المعاملات المنطقية الجزء 3المعامل الثلاثي مع تعبير Ifمراجعة - المنطق البسيط8حاسبة تقسيم الفاتورة
رسالة ترحيبيةالحصول على الإدخال3القابلية للقيمة الفارغة
ما هو الأمان من القيم الفارغةالأنواع القابلة للقيمة الفارغةعامل الاستدعاء الآمنعامل Elvisأساسيات تحدي الدوالتأكيد عدم كون القيمة فارغةمراجعة - الوصول الآمن9الحلقات
حلقة Forحلقة Whileحلقة Do-WhileBreakContinueالنطاقات في الحلقاتالحلقة المتداخلةمراجعة - المضروبمراجعة - الإدخال الديناميكيتدرّب بنفسك: Playground لـ Kotlin