دوال النطاقات
جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 9 من 56.
تُعد النطاقات Collections حقيقية، لذا فهي تأتي مع نفس مجموعة الأدوات التي تستخدمها في المصفوفات.
تعمل كل من contains و count و first و last بشكل مباشر:
let r = 1...10
print(r.contains(5)) // صحيح
print(r.count) // 10
print(r.first!, r.last!) // 1 10معظم دوال المصفوفات التي استخدمتها تعمل أيضًا. تُرجع filter مصفوفة لأن نتيجة تصفية نطاق ليست نطاقًا بحد ذاتها:
let evens = (1...10).filter { $0 % 2 == 0 }
print(evens) // [2, 4, 6, 8, 10]الأمر نفسه مع reduce: النطاقات تدعمها، وستعتمد عليها لعمليات الجمع والضرب السريعة.
التحدي
سهلاقرأ عددين صحيحين (في سطرين): n و target. تعامل مع النطاق المغلق 1...n كمجموعة بياناتك.
اطبع ثلاثة أسطر:
trueعندما يكونtargetضمن النطاق، وإلاfalse- حاصل ضرب كل قيمة في النطاق (
n!: المضروب). استخدمreduce. - القيم الموجودة في النطاق التي تعد مضاعفات العدد
3، مدمجة بـ,(أو سطر فارغ في حال عدم وجود أي منها). استخدمfilter.
بالنسبة للمدخلات 5 / 3، يكون المخرج:
true
120
3ورقة مرجعية
تتوافق النطاقات (Ranges) مع Collection وتدعم دوال المجموعات الشائعة:
let r = 1...10
r.contains(5) // true
r.count // 10
r.first! // 1
r.last! // 10تُرجع filter على النطاق مصفوفة:
let evens = (1...10).filter { $0 % 2 == 0 }
// [2, 4, 6, 8, 10]تعمل reduce مباشرة على النطاقات:
let product = (1...5).reduce(1) { $0 * $1 } // 120
let sum = (1...5).reduce(0, +) // 15جرّب بنفسك
let n = Int(readLine()!)!
let target = Int(readLine()!)!
let r = 1...n
// TODO: contains(target)، المنتج عبر reduce، مضاعفات 3 عبر filter
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات