0Pricing
Swift Academy · درس

القيم المرتبطة للبيانات الغنية

أضيفوا حمولات إلى الحالات واستخرجوها باستخدام مطابقة الأنماط.

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

مرحبًا

تتيح القيم المرتبطة لكل حالة في التعداد حمل بيانات إضافية. وتحول التعدادات إلى اتحادات مميَّزة قوية، وهي أساس نمذجة الحالات الآمنة من ناحية النوع في Swift.

تعريف القيم المرتبطة

```swift enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String) } let product = Barcode.upc(8,85909,51226,3) let web = Barcode.qrCode("https://example.com") ```

استخراج القيم باستخدام switch

```swift switch barcode { case .upc(let n, let m, let p, let c): print("UPC: \(n)-\(m)-\(p)-\(c)") case .qrCode(let code): print("QR: \(code)") } ``` أو استخدم `case let` لربط جميع القيم دفعةً واحدة: ```swift case let .upc(n,m,p,c): ... ```

القيم المرتبطة المُسمّاة

```swift enum NetworkResult { case success(statusCode: Int, data: Data) case failure(error: Error) } if case .success(let code, let data) = result { ... } ``` تجعل التسميات سياق الربط واضحًا.

القيم المرتبطة مقابل القيم الخام

• القيم الخام: ثوابت وقت الترجمة، وجميع الحالات من النوع نفسه، وخصيصة `rawValue` • القيم المرتبطة: بيانات وقت التشغيل، ولكل حالة نوعها الخاص، ويتم استخراجها عبر مطابقة الأنماط لا يمكن الجمع بين القيم المرتبطة والقيم الخام في التعداد نفسه.

Optional بوصفها تعدادًا

إنّ `Optional` في Swift هو حرفيًا: ```swift enum Optional { case some(Wrapped) case none } ``` تعمل كل من `if let` و`switch` و`??` وفق هذه الآلية نفسها.

Result<Success, Failure>

```swift func fetch() -> Result { ... } switch fetch() { case .success(let data): process(data) case .failure(let err): print(err) } ``` إنّ `Result` تعداد من المكتبة القياسية، وله حالتان من القيم المرتبطة.

مطابقة الأنماط في if case

```swift let item = Barcode.qrCode("hello") if case .qrCode(let code) = item { print("QR code: \(code)") } ``` تكون `if case` موجزة عندما تكونون مهتمين بحالة واحدة فقط.

guard case

```swift func process(_ result: NetworkResult) { guard case .success(_, let data) = result else { return } handle(data) } ``` تخرج `guard case` مبكرًا إذا لم يطابق النمط القيمة.

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

```swift let events: [AppEvent] = [.login("alice"), .pageView("/home"), .logout] let logins = events.compactMap { if case .login(let u) = $0 { return u } else { return nil } } ```

تحقّق سريع

ما الكلمة المفتاحية المستخدمة لاستخراج القيم المرتبطة داخل حالة switch؟

مراجعة

أهم النقاط: • تربط القيم المرتبطة البيانات بحالات فردية • تُستخرج باستخدام `switch` أو `if case` أو `guard case` • استخدموا التسميات لتوضيح المعنى: `.success(code: Int, data: Data)` • إنّ `Optional` و`Result` تعدادان من المكتبة القياسية ولهما قيم مرتبطة • لا يمكن الجمع بين القيم المرتبطة والقيم الخام في تعداد واحد التالي: التعدادات indirect والهياكل العودية.

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

هل درس «القيم المرتبطة للبيانات الغنية» مجاني؟

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

ماذا ستتعلم في «القيم المرتبطة للبيانات الغنية»؟

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

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

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

كم من الوقت يستغرق درس «القيم المرتبطة للبيانات الغنية»؟

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

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

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

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

  1. القيم الخام وCaseIterable
  2. القيم المرتبطة للبيانات الغنية
  3. التعدادات غير المباشرة والبنى التكرارية
  4. نمذجة آلات الحالات باستخدام التعدادات
← العودة إلى Swift Academy