0Pricing
Swift Academy · درس

أساسيات Result<Success, Failure>

أنشئوا قيم Result وطابقوا أنماطها لمعالجة الأخطاء بوضوح.

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

مرحبًا

‏`Result` هو تعداد Swift يضم حالتين — `.success` و`.failure` — ويوفّر معالجة صريحة للأخطاء دون صياغة throws/catch.

تعريف Result

```swift func divide(_ a: Double, by b: Double) -> Result { guard b != 0 else { return .failure(.divisionByZero) } return .success(a / b) } enum DivisionError: Error { case divisionByZero } ```

استخدام Result

```swift switch divide(10, by: 2) { case .success(let value): print("Result: \(value)") case .failure(let err): print("Error: \(err)") } ```

get() — يرمي خطأ عند الفشل

```swift let result = divide(10, by: 0) do { let value = try result.get() // throws DivisionError } catch { print(error) } ```

تخزين النتائج

```swift var cache: [URL: Result] = [:] cache[url] = .success(data) cache[url] = .failure(URLError(.notConnectedToInternet)) ```

استخدام Result في واجهات API غير المتزامنة

```swift func fetch(url: URL, completion: @escaping (Result) -> Void) { URLSession.shared.dataTask(with: url) { data, _, error in if let data { completion(.success(data)) } else { completion(.failure(error ?? URLError(.unknown))) } }.resume() } ```

مطابقة الأنماط باستخدام if case

```swift if case .success(let data) = result { process(data) } if case .failure(let err) = result { handle(err) } ```

خصائص النجاح والفشل

```swift let r: Result = .success(42) print(r.success) // Optional(42) — non-nil on success print(r.failure) // nil ```

التهيئة من الدوال التي ترمي أخطاء

```swift let result = Result { try JSONDecoder().decode(User.self, from: data) } // .success(user) or .failure(decodingError) ```

مقارنة النتائج

```swift let a: Result = .success(42) let b: Result = .success(42) // Cannot == directly unless Success/Failure are Equatable ```

تحقق سريع

ماذا يفعل `result.get()` عندما تكون Result في حالة `.failure`؟

مراجعة

النقاط الأساسية: • `Result` — نجاح أو فشل صريحان دون throws • `.success(value)` / `.failure(error)` — حالتان • يرمي `.get()` خطأً عند الفشل • تصل `Result { try ... }` بين الشفرة التي ترمي أخطاء وResult • مفيد لتخزين النتائج المؤجلة وتمريرها التالي: ‏map وflatMap على Result.

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

هل درس «أساسيات Result<Success, Failure>» مجاني؟

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

ماذا ستتعلم في «أساسيات Result<Success, Failure>»؟

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

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

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

كم من الوقت يستغرق درس «أساسيات Result<Success, Failure>»؟

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

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

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

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

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