معلمات in-out ومعالجة الأخطاء الأساسية (throws)
غيّر المعلمات باستخدام معلمات in-out، وعالج حالات الفشل القابلة للاسترداد باستخدام throws وtry وdo/catch.
معلمات in-out ومعالجة الأخطاء الأساسية (throws) درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 3 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 3 دروس في المجموع.
مقدمة
يتناول هذا الدرس معاملات in-out (لتعديل متغير المستدعي) ومعالجة الأخطاء الأساسية باستخدام throws وtry وdo/catch.
أساسيات inout
تتيح inout للدالة تعديل متغير المستدعي. استدعها باستخدام &name.
func increment(_ value: inout Int) {
value += 1 // mutate caller's variable
}
var count = 0
increment(&count)
print("count =", count) // 1متى تُستخدم
استخدم inout باعتدال:
- مناسبة للتعديلات البسيطة، مثل العدادات.
- فضّل إرجاع قيم جديدة لتحسين الوضوح وقابلية الاختبار.
throws + do/catch
ميّز الدوال التي قد تفشل باستخدام throws. استخدم do/try/catch لمعالجة الأخطاء.
enum FileError: Error { case notFound, unreadable }
func readFile(named: String) throws -> String {
if named.isEmpty { throw FileError.notFound }
return "contents of \\(named)"
}
// Calling a throwing function
do {
let text = try readFile(named: "notes.txt")
print(text)
} catch {
print("Failed:", error)
}try? مقابل try!
تحوّل try? الأخطاء إلى nil (قيمة اختيارية). وستؤدي try! إلى تعطل التطبيق عند حدوث خطأ، لذا تجنبها إلا إذا كنت متأكدًا تمامًا.
// try? converts errors to nil (optional)
let maybeText = try? readFile(named: "")
print(maybeText as Any) // nil
// try! crashes on error—only use when you are sure
// let forcedText = try! readFile(named: "") // avoid in productionدوال مساعدة تُطلق الأخطاء
يمكنك إطلاق الأخطاء من الدوال المساعدة. فضّل استخدام تعدادات صغيرة للأخطاء المخصصة، وتجنب NSError الخام ما لم تكن هناك حاجة إليه.
func parseInt(_ s: String) throws -> Int {
if let n = Int(s) { return n }
else { throw NSError(domain: "Parse", code: 1) }
}
do {
let n = try parseInt("10")
print("n =", n)
} catch {
print("parse error")
}سؤال عن inout
تحقق سريع: ماذا تعني inout بالنسبة إلى المعامل؟
مراجعة
مراجعة: استخدم inout للتعديل المباشر، ولكن باعتدال. عالج حالات الفشل باستخدام throws وtry وdo/catch؛ وفضّل try? للنتائج الاختيارية، وتجنب try! في بيئة الإنتاج.
الأسئلة الشائعة
هل درس «معلمات in-out ومعالجة الأخطاء الأساسية (throws)» مجاني؟
نعم — نص درس «معلمات in-out ومعالجة الأخطاء الأساسية (throws)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 3 دروس في المجموع.
ماذا ستتعلم في «معلمات in-out ومعالجة الأخطاء الأساسية (throws)»؟
غيّر المعلمات باستخدام معلمات in-out، وعالج حالات الفشل القابلة للاسترداد باستخدام throws وtry وdo/catch. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 3.
كم من الوقت يستغرق درس «معلمات in-out ومعالجة الأخطاء الأساسية (throws)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تعريف الدوال والمعلمات والتسميات والقيم الافتراضية والمتغيرات
- القيم المُعادة والقيم المتعددة عبر الصفوف
- معلمات in-out ومعالجة الأخطاء الأساسية (throws)