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

Map

جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 23 من 56.

تأخذ map الـ closure وتطبقه على كل عنصر، وتُرجع مصفوفة جديدة من النتائج. المصفوفة الجديدة لها نفس طول المصدر.

let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }
print(doubled)               // [2, 4, 6, 8]

$0 هو اختصار للمعامل الأول للإغلاق (closure). الصيغة الأطول توضح اسم المعامل ونوع الإرجاع:

let doubled = nums.map { (n: Int) -> Int in
    return n * 2
}

يمكن لـ map أيضاً تغيير نوع العنصر. إن تحويل [Int] عبر closure يعيد String يمنحك [String]:

let labels = nums.map { "#\($0)" }
print(labels)                // ["#1", "#2", "#3", "#4"]
challenge icon

التحدي

سهل

اقرأ سطراً واحداً من المدخلات: قائمة من الأعداد الصحيحة مفصولة بفاصلة (درجات الحرارة بالفهرنهايت).

قم بتحويل كل منها إلى درجة مئوية باستخدام الصيغة C = (F - 32) * 5 / 9 في الحساب الصحيح (اقتطاع باتجاه الصفر، بدون أرقام عشرية). اطبع، في أسطر منفصلة:

  1. درجات الحرارة المئوية، مدمجة بـ ,
  2. تسمية واحدة لكل درجة حرارة مع البادئة F=<f> C=<c>، مدمجة بـ ;

استخدم map لكلا السطرين.

للمدخلات 32,212,98,0، المخرجات هي:

0,100,36,-17
F=32 C=0;F=212 C=100;F=98 C=36;F=0 C=-17

ورقة مرجعية

تطبق map إغلاقاً (closure) على كل عنصر وتُرجع مصفوفة جديدة بنفس الطول:

let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }  // [2, 4, 6, 8]

$0 هو اختصار للمعامل الأول للإغلاق (closure). الصيغة الصريحة:

let doubled = nums.map { (n: Int) -> Int in
    return n * 2
}

يمكن لـ map تغيير نوع العنصر (على سبيل المثال [Int][String]):

let labels = nums.map { "#\($0)" }  // ["#1", "#2", "#3", "#4"]

جرّب بنفسك

let f = readLine()!.components(separatedBy: ",").map { Int($0)! }

// TODO: السطر 1 = celsius مدمجة بـ ","
// TODO: السطر 2 = التسميات "F=<f> C=<c>" مدمجة بـ ";"
quiz iconاختبر نفسك

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

جميع دروس المنطق والتدفق