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

compactMap

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

compactMap هي map مع تصفية القيم الاختيارية (optionals). يمكن أن يعيد الـ closure قيمة Optional؛ تقوم compactMap بإسقاط نتائج nil وفك تغليف (unwraps) الباقي.

let strings = ["3", "hi", "7", "!", "1"]
let numbers = strings.compactMap { Int($0) }
print(numbers)               // [3, 7, 1]

Int("hi") يُرجع nil لأنه لا يمكنه تحليل رقم من "hi". تقوم compactMap باستبعاد تلك القيم تلقائيًا وتعطيك مصفوفة [Int] نظيفة.

بدونها، ستكتب strings.map { Int($0) } وستحصل على [Int?] مع وجود قيم nil مختلطة بها، ثم سيتعين عليك تصفيتها بنفسك. compactMap تقوم بكلا الخطوتين في خطوة واحدة.

challenge icon

التحدي

سهل

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

اطبع:

  1. الأعداد الصحيحة (بترتيب الإدخال)، مفصولة بـ ,
  2. عدد المدخلات التي تم إسقاطها (التي لم يمكن تحليلها)
  3. مجموع الأعداد الصحيحة التي تم تحليلها

للمدخل 3,hi,7,!,1,42,oops، المخرجات هي:

3,7,1,42
3
53

جرّب بنفسك

let parts = readLine()!.components(separatedBy: ",")

// TODO: compactMap إلى أعداد صحيحة (ints)؛ طباعة العناصر مدمجة، عدد العناصر المحذوفة، والمجموع
quiz iconاختبر نفسك

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

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

تدرّب بنفسك: Playground لـ Swift