Map/Filter/Reduce والتسلسلات الكسولة
استخدم map و filter و reduce للتحويل والاختيار والدمج، ثم أضف .lazy لتأجيل العمل وتجنّب المصفوفات الوسيطة.
Map/Filter/Reduce والتسلسلات الكسولة درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 3 دروس في المجموع.
الفكرة الأساسية
الخوارزميات الأساسية:
- map: تحويل كل عنصر
- filter: الاحتفاظ بالعناصر التي يطابق فيها predicate الشرط
- reduce: دمج العناصر في قيمة واحدة
- .lazy: تأجيل العمل لتجنب المصفوفات المؤقتة
map
تحوّل map كل عنصر وتُرجع مصفوفة جديدة.
let nums = [1, 2, 3]
let doubled = nums.map { $0 * 2 } // [2, 4, 6]
print(doubled)
let words = ["swift", "kit"]
let upper = words.map { $0.uppercased() } // ["SWIFT","KIT"]
print(upper)filter
تُبقي filter على العناصر التي تُرجع فيها predicate القيمة true.
let scores = [45, 72, 88, 53]
let passing = scores.filter { $0 >= 60 } // [72, 88]
print(passing)
let names = ["Ana","Li","Max"]
let short = names.filter { $0.count <= 2 } // ["Li"]
print(short)reduce
تطوي reduce تسلسلاً إلى نتيجة واحدة باستخدام قيمة بداية وclosure للدمج.
let total = [1,2,3,4].reduce(0) { acc, x in acc + x } // 10
print(total)
let joined = ["a","b","c"].reduce("") { $0 + $1 } // "abc"
print(joined)العمل الكسول عند الطلب
ينشئ .lazy مساراً مؤجلاً: تُنفَّذ العمليات أثناء استهلاكك للعناصر (مثلاً عبر prefix أو first أو التكرار).
let range = 1...10
let lazyPipeline = range.lazy
.map { x in print("map", x); return x * x }
.filter { x in print("filter", x); return x % 2 == 0 }
// Only the first 3 results are needed:
let firstThree = Array(lazyPipeline.prefix(3))
print("result:", firstThree)
// Notice how only the work needed for 3 elements ran.نصائح
نصائح:
- اربط map ← filter ← reduce للحصول على تدفقات بيانات واضحة.
- أضف .lazy عندما تستهلك جزءاً فقط من المسار أو تريد تجنب القيم المؤقتة.
- حوّل إلى نوع ملموس باستخدام
Array(...)فقط عندما تحتاج إلى مصفوفة ملموسة.
دلالات lazy
تحقق سريع: ما تأثير .lazy في سلسلة map/filter؟
مراجعة
مراجعة: استخدم map للتحويل، وfilter للاختيار، وreduce للدمج. أضف .lazy للتقييم عند الطلب وتقليل عمليات التخصيص.
الأسئلة الشائعة
هل درس «Map/Filter/Reduce والتسلسلات الكسولة» مجاني؟
نعم — نص درس «Map/Filter/Reduce والتسلسلات الكسولة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 3 دروس في المجموع.
ماذا ستتعلم في «Map/Filter/Reduce والتسلسلات الكسولة»؟
استخدم map و filter و reduce للتحويل والاختيار والدمج، ثم أضف .lazy لتأجيل العمل وتجنّب المصفوفات الوسيطة. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.
كم من الوقت يستغرق درس «Map/Filter/Reduce والتسلسلات الكسولة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- هرميات Sequence/Collection
- Map/Filter/Reduce والتسلسلات الكسولة
- المكرّرات المخصّصة ونصائح الأداء