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

Filter

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

تأخذ filter إغلاقاً شرطياً (predicate closure) وتُعيد مصفوفة جديدة تحتوي فقط على العناصر التي أعاد الإغلاق لها القيمة true.

let nums = [1, 2, 3, 4, 5, 6]
let evens = nums.filter { $0 % 2 == 0 }
print(evens)                 // [2, 4, 6]

تحافظ النتيجة على الترتيب الأصلي. يتطابق نوع النتيجة مع نوع الإدخال، ولا يحدث أي تحويل، بل مجرد عملية اختيار.

يتسلسل filter بشكل طبيعي مع map:

let big = nums
    .filter { $0 > 2 }
    .map { $0 * $0 }
print(big)                   // [9, 16, 25, 36]

اقرأ كل سلسلة من الأعلى إلى الأسفل، تماماً مثل خط الأنابيب. تنتج كل خطوة مصفوفة جديدة؛ ولا شيء يعدل الأصل.

challenge icon

التحدي

سهل

اقرأ سطرين من المدخلات:

  1. قائمة من الأعداد الصحيحة مفصولة بفاصلة ,
  2. عدد صحيح min

اطبع، في أسطر منفصلة:

  1. الأعداد الصحيحة التي هي أكبر تماماً من min، مدمجة بفاصلة , (أو فارغة إذا لم يتوفر أي منها)
  2. مربعات الأعداد الصحيحة المؤهلة، مدمجة بفاصلة ,
  3. عدد الأعداد الصحيحة المؤهلة

استخدم filter + map كسلسلة واحدة. لا تقم بالتكرار مرتين عبر المدخلات.

للمدخلات 1,5,2,8,3,7 في السطر الأول و 4 في السطر الثاني، تكون المخرجات:

5,8,7
25,64,49
3

جرّب بنفسك

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

// TODO: التصفية > min مرة واحدة، ثم التحويل إلى مربعات؛ طباعة كليهما، ثم العد
quiz iconاختبر نفسك

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

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

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