0Pricing
Swift Academy · درس

Map وFilter وReduce على المصفوفات

حوّل المصفوفات باستخدام الدوال الوظيفية عالية الرتبة

Map وFilter وReduce على المصفوفات درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

مرحبًا

تتيح الدوال ذات الترتيب الأعلى في Swift — `map` و`filter` و`reduce` — تحويل المجموعات من دون تعديلها. وهي توضّح ما تريدون تنفيذه وتلغي الحلقات المعرّضة للأخطاء.

map — تحويل كل عنصر

```swift let nums = [1, 2, 3, 4] let doubled = nums.map { $0 * 2 } // [2,4,6,8] let strings = nums.map { "Item \($0)" } // ["Item 1","Item 2",...] ``` يطبّق `map` إغلاقًا على كل عنصر ويُرجع مصفوفة جديدة من النتائج.

filter — الاحتفاظ بالعناصر المطابقة

```swift let scores = [45, 80, 92, 37, 68] let passing = scores.filter { $0 >= 60 } // [80,92,68] let even = (1...10).filter { $0 % 2 == 0 } // [2,4,6,8,10] ``` يُرجع `filter` مصفوفة جديدة تحتوي فقط على العناصر التي يُرجع الإغلاق لها القيمة `true`.

reduce — الدمج في قيمة واحدة

```swift let nums = [1, 2, 3, 4, 5] let sum = nums.reduce(0) { $0 + $1 } // 15 let product = nums.reduce(1, *) // 120 let joined = ["a","b","c"].reduce("") { $0 + $1 } // "abc" ```

تسلسل map وfilter وreduce

```swift let result = (1...10) .filter { $0 % 2 == 0 } // [2,4,6,8,10] .map { $0 * $0 } // [4,16,36,64,100] .reduce(0, +) // 220 ``` تُقرأ السلسلة من اليسار إلى اليمين، فتعبّر بوضوح عن مسار البيانات.

compactMap — التحويل وفك التغليف

```swift let strings = ["1","two","3","four","5"] let nums = strings.compactMap { Int($0) } // [1,3,5] ``` يحوّل `compactMap` القيم ويزيل النتائج التي تساوي nil، لذا فهو مناسب تمامًا للتحويلات التي قد تفشل.

flatMap — تسطيح المصفوفات المتداخلة

```swift let nested = [[1,2,3],[4,5],[6]] let flat = nested.flatMap { $0 } // [1,2,3,4,5,6] let words = ["hello world","foo bar"] let all = words.flatMap { $0.split(separator: " ") } // ["hello","world","foo","bar"] ```

forEach — التأثيرات الجانبية فقط

```swift [1, 2, 3].forEach { print($0) } ``` يشبه `forEach` حلقة `for-in`، لكنه لا يسمح باستخدام `break` أو `continue`. استخدموه فقط عندما تحتاجون إلى تأثيرات جانبية ولا تحتاجون إلى الخروج مبكرًا.

reduce(into:) للقواميس

```swift let words = ["apple","banana","apricot","blueberry"] let grouped = words.reduce(into: [Character:[String]]()) { dict, word in let key = word.first! dict[key, default: []].append(word) } // ["a":["apple","apricot"],"b":["banana","blueberry"]] ```

السلاسل الكسولة لتحسين الأداء

```swift let lazyResult = (1...1_000_000) .lazy .filter { $0 % 7 == 0 } .map { $0 * 2 } .prefix(5) // No intermediate arrays created! ``` أضيفوا `.lazy` في بداية السلسلة لتقييمها عند الحاجة.

تحقق سريع

ما الدالة التي تحوّل كل عنصر وتزيل النتائج التي تساوي nil؟

مراجعة

أهم النقاط: • `map` — تحويل كل عنصر إلى عنصر في مصفوفة جديدة • `filter` — الاحتفاظ بالعناصر المطابقة لتابع الاختبار • `reduce` — دمج العناصر في قيمة واحدة متراكمة • `compactMap` — التحويل مع تجاهل قيم nil • `flatMap` — التحويل مع تسطيح التسلسلات المتداخلة • استخدموا `.lazy` في السلاسل لتجنب تخصيص الذاكرة للمصفوفات الوسيطة التالي: المصفوفات ثنائية الأبعاد والمجموعات المتداخلة.

الأسئلة الشائعة

هل درس «Map وFilter وReduce على المصفوفات» مجاني؟

نعم — نص درس «Map وFilter وReduce على المصفوفات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «Map وFilter وReduce على المصفوفات»؟

حوّل المصفوفات باستخدام الدوال الوظيفية عالية الرتبة تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «Map وFilter وReduce على المصفوفات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إنشاء المصفوفات وتعديلها
  2. الفرز والبحث والتقطيع
  3. Map وFilter وReduce على المصفوفات
  4. المصفوفات ثنائية الأبعاد والمجموعات المتداخلة
← العودة إلى Swift Academy