Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

طريقة التعداد (enumerate)

جزء من قسم الأساسيات في رحلة Swift على Coddy — الدرس 70 من 86.

أحيانًا عند التكرار عبر مصفوفة، تحتاج إلى معرفة ليس فقط العنصر، ولكن أيضًا موقعه. بينما يمكنك تتبع الفهرس يدويًا باستخدام متغير عداد، توفر Swift حلاً أكثر أناقة: طريقة enumerated().

عندما تستدعي enumerated() على مصفوفة، فإنها تُرجع تسلسلاً من الصفوف (tuples)، حيث يحتوي كل صف على الفهرس والعنصر:

let colors = ["Red", "Green", "Blue"]

for (index, color) in colors.enumerated() {
    print("\(index): \(color)")
}
// 0: Red
// 1: Green
// 2: Blue

لاحظ كيف نقوم بتفكيك كل tuple مباشرة داخل الحلقة باستخدام (index, color). هذا يتيح لنا الوصول إلى كلتا القيمتين دون الحاجة إلى أي كود إضافي.

هذا مفيد بشكل خاص عندما تحتاج إلى عرض قوائم مرقمة أو إجراء عمليات تعتمد على موضع العنصر:

let tasks = ["Wake up", "Exercise", "Eat breakfast"]

for (index, task) in tasks.enumerated() {
    print("Task \(index + 1): \(task)")
}
// المهمة 1: Wake up
// المهمة 2: Exercise
// المهمة 3: Eat breakfast

تُبقي طريقة enumerated() كودك نظيفاً وسهل القراءة مقارنةً بإدارة متغير عداد منفصل يدوياً.

challenge icon

التحدي

سهل

اكتب دالة formatWithPositions تأخذ items وتعيد سلسلة نصية منسقة تعرض كل عنصر مع رقم موقعه.

استخدم الطريقة enumerated() للتكرار عبر المصفوفة وبناء سلسلة نصية حيث يتم بادئة كل عنصر برقم موقعه (بدءاً من 1).

المنطق:

  1. قم بالتكرار عبر المصفوفة باستخدام enumerated()
  2. لكل عنصر، أنشئ سلسلة نصية بالتنسيق "position. item" (باستخدام ترقيم يبدأ من 1)
  3. اربط جميع السلاسل النصية المنسقة بحرف سطر جديد (\n)

المعاملات:

  • items ([String]): مصفوفة من السلاسل النصية لتنسيقها

القيمة المرجعة: سلسلة نصية واحدة مع كل عنصر في سطر خاص به، مسبوقاً برقم موقعه (String). التنسيق: "1. item1\n2. item2\n3. item3"

مثال: إذا كانت items هي ["Apple", "Banana", "Cherry"]، يجب أن تعيد الدالة:

"1. Apple\n2. Banana\n3. Cherry"

ملاحظة: إذا كانت المصفوفة فارغة، أعد سلسلة نصية فارغة "".

ورقة مرجعية

تعيد الطريقة enumerated() تسلسلاً من أزواج (tuples) تحتوي على كل من الفهرس والعنصر في المصفوفة:

let colors = ["Red", "Green", "Blue"]

for (index, color) in colors.enumerated() {
    print("\(index): \(color)")
}
// 0: Red
// 1: Green
// 2: Blue

يتم تفكيك كل زوج (tuple) مباشرة في الحلقة باستخدام صيغة (index, element)، مما يوفر وصولاً إلى كل من الموضع والقيمة.

هذا مفيد لإنشاء قوائم مرقمة عن طريق إضافة 1 إلى الفهرس الذي يبدأ من الصفر:

let tasks = ["Wake up", "Exercise", "Eat breakfast"]

for (index, task) in tasks.enumerated() {
    print("Task \(index + 1): \(task)")
}
// Task 1: Wake up
// Task 2: Exercise
// Task 3: Eat breakfast

جرّب بنفسك

func formatWithPositions(items: [String]) -> String {
    // اكتب الكود هنا
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات