0Pricing
Swift Academy · درس

‏map وflatMap على Result

سلسِلوا التحويلات على قيم النجاح دون عبارات switch متداخلة.

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

مرحبًا

يتيح `map` و`flatMap` على `Result` تحويل قيم النجاح دون عبارات switch متداخلة، مع إبقاء الشفرة مسطّحة وسهلة القراءة.

map على Result

```swift let r: Result = .success(5) let doubled = r.map { $0 * 2 } // .success(10) let failed: Result = .failure(MyError.bad) let same = failed.map { $0 * 2 } // .failure(MyError.bad) ```

mapError على Result

```swift let r: Result = .failure(URLError(.notConnectedToInternet)) let mapped = r.mapError { AppError.network($0) } // Result ```

flatMap — تسلسل العمليات القابلة للفشل

```swift func parseJSON(_ data: Data) -> Result { ... } func validate(_ user: User) -> Result { ... } let result: Result = fetchResult .flatMap { parseJSON($0) } .flatMap { validate($0).mapError { $0 as Error } } ```

flatMapError

```swift func recover(_ e: NetworkError) -> Result { .success(cachedData) } let result = networkResult.flatMapError { recover($0) } ```

map في مقابل flatMap على Result

• `map`: يحوّل قيمة النجاح؛ إذا أعاد التحويل `T`، فستكون النتيجة `Result` • `flatMap`: يعيد التحويل `Result`؛ ويمنع التداخل من النوع `Result,E>`

تسلسل ثلاث عمليات

```swift fetchData(url) .map { parse($0) } .flatMap { validate($0) } .map { transform($0) } // Each step only runs if previous succeeded ```

مقارنة بالتسلسل الاختياري

يشبه تسلسل Result التسلسل الاختياري عند التعامل مع الأخطاء: ```swift // Optional chain: name?.uppercased()?.prefix(5) // Result chain: result.map { $0.uppercased() }.map { $0.prefix(5) } ```

التحويل إلى Optional

```swift let opt = result.success // Value? — nil on failure let val = try? result.get() // Value? — nil on failure ```

الاسترداد بنمط يشبه ??

```swift let value = (try? result.get()) ?? defaultValue ```

تحقق سريع

ماذا يفعل `result.flatMap { transform($0) }` عندما تكون `result` في حالة `.failure`؟

مراجعة

النقاط الأساسية: • يحوّل `map` قيمة النجاح ويمرّر الفشل كما هو • يحوّل `mapError` نوع الفشل • يربط `flatMap` بين العمليات التي تعيد Result بدورها • يتجنب عبارات switch المتداخلة • استخدموا التسلسل لإنشاء مسارات واضحة تمرّر الأخطاء التالي: أنواع الأخطاء المخصصة.

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

هل درس «‏map وflatMap على Result» مجاني؟

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

ماذا ستتعلم في «‏map وflatMap على Result»؟

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

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

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

كم من الوقت يستغرق درس «‏map وflatMap على Result»؟

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

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

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

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

  1. أساسيات Result
  2. ‏map وflatMap على Result
  3. أنواع الأخطاء المخصّصة باستخدام LocalizedError
  4. الربط بين Result وasync/await
← العودة إلى Swift Academy