استخدام Guard Let
جزء من قسم الأساسيات في رحلة Swift على Coddy. الدرس 13 من 86.
بينما تقوم if let بفك قيمة اختيارية وتشغّل التعليمات البرمجية عند وجود قيمة، فإن guard let تتبع النهج المعاكس. فهي تخرج مبكرًا عند غياب قيمة. ويكون هذا مفيدًا بشكل خاص داخل الدوال عندما تريد معالجة الحالة "السيئة" أولًا والحفاظ على منطقك الرئيسي نظيفًا.
func greet(name: String?) {
guard let unwrappedName = name else {
print("No name provided")
return
}
print("Hello, \(unwrappedName)!")
}
greet(name: "Taylor") // مرحباً، تايلور!
greet(name: nil) // لم يُقدَّم أي اسمتتحقق عبارة guard let مما إذا كانت name تحتوي على قيمة. وإذا لم تكن كذلك، تُنفَّذ كتلة else وتخرج الدالة باستخدام return. وإذا كان الخيار يحتوي على قيمة، فسيُزال تغليفه في unwrappedName، وهذا هو الفرق الأساسي عن if let: يظل المتغير بعد إزالة التغليف متاحًا لبقية الدالة، وليس داخل كتلة فقط.
يحافظ نمط «الخروج المبكر» هذا على سهولة قراءة شفرتك من خلال معالجة حالات الخطأ مسبقًا، بحيث لا يكون المنطق الرئيسي متداخلًا داخل عدة عبارات if.
التحدي
سهلاكتب دالة validateAge تأخذ معامل age اختياريًا وتستخدم guard let لإلغاء تغليفه بأمان.
إذا كانت قيمة العمر هي nil، فأرجِع "Invalid age". وإلا، فأرجِع "Age: [value]" حيث تمثل [value] العمر بعد إلغاء تغليفه.
المعاملات:
age(Int?): عدد صحيح اختياري يمثل عمر شخص
القيمة المُعادة: سلسلة نصية، إما "Invalid age" إذا كان الإدخال nil، أو "Age: [value]" مع القيمة بعد إلغاء تغليفها.
مثال: إذا كانت قيمة age هي 25، فأرجِع "Age: 25". وإذا كانت قيمة age هي nil، فأرجِع "Invalid age".
جرّب بنفسك
func validateAge(age: Int) -> String {
// اكتب الكود هنا
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةالإسناد المركبمراجعة - عمليات رياضية بسيطةمعاملات المقارنة7أساسيات الإدخال والإخراج
دالة الطباعةتضمين النصوصإدخال ReadLineتحويل الأنواعمراجعة - حتى 120مراجعة - True أو False10الدوال
تعريف دالةالمعاملات والوسائطقيم الإرجاعتسميات الوسائطمراجعة - دالة Sigmaمراجعة - دالة Validationالقيم الافتراضية2المتغيرات
Let مقابل Varتوصيف الأنواع (Type Annotations)الأرقامStringBooleanقواعد التسميةمراجعة - تهيئة المتغيرات5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعامل الثلاثي (Ternary Operator)8حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على المدخلات3القيم الاختيارية (Optionals)
ما هي القيم الاختياريةفك القيم باستخدام If Letاستخدام Guard Letمعامل دمج Nilمراجعة - فك القيم بأمان9حلقات التكرار
حلقة For-Inحلقة Whileحلقة Repeat-WhileBreakContinueمراجعة - المضروب (Factorial)النطاقات في حلقات التكرارالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)تدرّب بنفسك: Playground لـ Swift