Menu
CoddyTech

استخدام 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") // مرحبًا، Taylor!
greet(name: nil)      // لم يُقدَّم اسم

يتحقق بيان guard let مما إذا كانت قيمة name موجودة. إذا لم تكن كذلك، فسيُنفَّذ المقطع else وتنتهي الدالة باستخدام return. إذا كان الخيار يحتوي على قيمة، فستُفكّ إلى unwrappedName، وهذا هو الفرق الأساسي عن if let: يظل المتغير المفكوك متاحًا لبقية الدالة، وليس داخل مقطع فقط.

يحافظ نمط «الخروج المبكر» هذا على سهولة قراءة الشيفرة من خلال معالجة حالات الخطأ مسبقًا، حتى لا يكون المنطق الأساسي متداخلًا داخل عدة عبارات if.

challenge icon

التحدي

سهل

اكتب دالة validateAge تأخذ المعامل الاختياري age وتستخدم guard let لفك تغليفه بأمان.

إذا كانت قيمة العمر هي nil، فأعِد "Invalid age". وإلا، فأعِد "Age: [value]"، حيث تمثل [value] قيمة العمر بعد فك تغليفها.

المعاملات:

  • age (Int?): عدد صحيح اختياري يمثل عمر شخص

القيمة المعادة: سلسلة نصية، إما "Invalid age" إذا كانت قيمة الإدخال nil، أو "Age: [value]" مع القيمة بعد فك تغليفها.

تقرأ الأسطر المقفلة أسفل دالتك العمر من الإدخال (إدخال nil يعطي nil) وتطبع القيمة التي تعيدها دالتك.

مثال: إذا كانت قيمة age هي 25، فأعِد "Age: 25". وإذا كانت قيمة age هي nil، فأعِد "Invalid age".

جرّب بنفسك

func validateAge(age: Int?) -> String {
    // اكتب الكود هنا
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: Playground لـ Swift