0Pricing
Swift Academy · درس

الدوال عالية الرتبة: ‏map وflatMap وcompactMap

حوّلوا التسلسلات دون تعديل باستخدام دوال المجموعات في Swift.

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

مرحبًا بكم

تأخذ الدوال من الرتبة العليا دوالً أخرى أو تُرجعها. وتُبنى مكتبة المجموعات في Swift عليها: `map` و`flatMap` و`compactMap` و`filter` و`reduce`.

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

```swift let nums = [1,2,3,4] let squared = nums.map { $0 * $0 } // [1,4,9,16] let strs = nums.map(String.init) // ["1","2","3","4"] ```

flatMap — التحويل والتسطيح

```swift let words = ["hello world","foo bar"] let all = words.flatMap { $0.split(separator:" ").map(String.init) } // ["hello","world","foo","bar"] ```

compactMap — التحويل وحذف قيم nil

```swift let mixed = ["1","two","3"] let nums = mixed.compactMap { Int($0) } // [1,3] ```

تمرير مراجع الدوال

```swift func double(_ n: Int) -> Int { n * 2 } let result = [1,2,3].map(double) // [2,4,6] ``` يمكن لمراجع الدوال أن تحل محل صيغ الإغلاقات.

تسلسل الدوال من الرتبة العليا

```swift let total = (1...100) .filter { $0 % 2 == 0 } .map { $0 * $0 } .reduce(0, +) // sum of squares of even numbers 1-100 ```

flatMap مع القيم الاختيارية

```swift let maybeStr: String? = "42" let maybeInt = maybeStr.flatMap { Int($0) } // Optional(42) let nil2: String? = nil let also = nil2.flatMap { Int($0) } // nil ```

دالة مخصصة من الرتبة العليا

```swift func applyTwice(_ f: (T) -> T, _ value: T) -> T { f(f(value)) } print(applyTwice({ $0 * 2 }, 3)) // 12 ```

sorted(by:) بصفتها دالة من الرتبة العليا

```swift let words = ["banana","apple","cherry"] let sorted = words.sorted { $0.count < $1.count } // ["apple","banana","cherry"] ``` تقبل `sorted(by:)` دالة مقارنة.

تطبيق عملي: معالجة بيانات المستخدمين

```swift struct User { var name: String; var score: Int } let users = [User(name:"A",score:80),User(name:"B",score:45),User(name:"C",score:92)] let topNames = users.filter { $0.score >= 80 }.map { $0.name }.sorted() // ["A","C"] ```

تحقق سريع

ما الذي تفعله `compactMap` ولا تفعله `map` العادية؟

مراجعة

أهم النقاط: • `map` — تحويل كل عنصر • `flatMap` — تحويل النتائج المتداخلة وتسطيحها • `compactMap` — التحويل وحذف قيم nil • مرروا مراجع الدوال مباشرة: `.map(String.init)` • سلّسلوها لإنشاء مسارات معالجة بيانات واضحة التالي: تركيب الدوال ومسارات المعالجة.

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

هل درس «الدوال عالية الرتبة: ‏map وflatMap وcompactMap» مجاني؟

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

ماذا ستتعلم في «الدوال عالية الرتبة: ‏map وflatMap وcompactMap»؟

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

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

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

كم من الوقت يستغرق درس «الدوال عالية الرتبة: ‏map وflatMap وcompactMap»؟

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

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

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

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

  1. الدوال النقية والتصميم الخالي من الآثار الجانبية
  2. الدوال عالية الرتبة: ‏map وflatMap وcompactMap
  3. تركيب الدوال وخطوط المعالجة
  4. التسلسلات الكسولة للكفاءة
← العودة إلى Swift Academy