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"]التحدي
سهلاقرأ سطراً واحداً من المدخلات: قائمة من الأعداد الصحيحة مفصولة بفاصلة (درجات الحرارة بالفهرنهايت).
قم بتحويل كل منها إلى درجة مئوية باستخدام الصيغة C = (F - 32) * 5 / 9 في الحساب الصحيح (اقتطاع باتجاه الصفر، بدون أرقام عشرية). اطبع، في أسطر منفصلة:
- درجات الحرارة المئوية، مدمجة بـ
, - تسمية واحدة لكل درجة حرارة مع البادئة
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>" مدمجة بـ ";"
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات