دوال النطاقات
جزء من قسم المنطق وتدفق التنفيذ في رحلة 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جرّب بنفسك
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مراجعة - إحصائيات الكلماتتدرّب بنفسك: Playground لـ Swift