مراجعة - بناء Pipeline
جزء من قسم المنطق والتدفق في رحلة Swift على Coddy. الدرس 43 من 56.
التحدي
متوسطقم ببناء خط معالجة بيانات (data pipeline) صغير يعتمد على الإغلاقات (closures).
اقرأ ثلاثة أسطر:
- عدد صحيح
min - عدد صحيح
scale - قائمة من الأعداد الصحيحة مفصولة بفاصلة
قم بتعريف مصنعين للإغلاقات (closure factories):
makeFilter(min: Int) -> (Int) -> Boolيلتقطminويعيد دالة شرطية (predicate)n > minmakeScaler(by: Int) -> (Int) -> Intيلتقطbyويعيد دالة تقوم بالضرب فيه
ثم قم بتعريف دالة pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int] تقوم بالتصفية أولاً، ثم التحويل.
اطبع ثلاثة أسطر:
- الأرقام التي اجتازت التصفية، مدمجة بـ
, - نفس الأرقام بعد القياس (scaling)، مدمجة بـ
, - مجموع القيم التي تم قياسها
للمدخلات 5 / 3 / 2,7,3,8,9، المخرجات هي:
7,8,9
21,24,27
72جرّب بنفسك
let minVal = Int(readLine()!)!
let scale = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
// مهام مطلوبة: makeFilter / makeScaler تعيد closures؛ pipeline(_:filter:transform:);
// ثم اطبع القيم المصفاة، والمكبرة، ومجموع القيم المكبرة
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات8Closures
أساسيات ClosuresTrailing Closuresالتقاط القيمإرجاع Closuresدوال Higher-Order مخصصةمراجعة - بناء Pipelineتدرّب بنفسك: Playground لـ Swift