مراجعة - بناء 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