Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

استخدام Guard Let

جزء من قسم الأساسيات في رحلة Swift على Coddy — الدرس 13 من 86.

بينما يقوم if let بفك تغليف القيمة الاختيارية (optional) وتشغيل الكود عند وجود قيمة، يتخذ 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. إذا كان الاختياري (optional) يحتوي على قيمة، فسيتم فكه في unwrappedName — وهنا يكمن الفرق الرئيسي عن if let: يظل المتغير الذي تم فكه متاحاً لبقية الدالة، وليس فقط داخل كتلة برمجية.

يحافظ نمط "الخروج المبكر" (early exit) هذا على قابلية قراءة الكود الخاص بك من خلال معالجة حالات الخطأ مسبقًا، بحيث لا يكون المنطق الرئيسي متداخلاً داخل جمل if متعددة.

challenge icon

التحدي

سهل

اكتب دالة باسم 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".

ورقة مرجعية

استخدم guard let لفك تغليف (unwrap) قيمة اختيارية (optional) والخروج مبكراً عند فقدان القيمة:

func greet(name: String?) {
    guard let unwrappedName = name else {
        print("No name provided")
        return
    }
    print("Hello, \(unwrappedName)!")
}

تتحقق جملة guard let مما إذا كانت القيمة الاختيارية (optional) تحتوي على قيمة. إذا لم تكن كذلك، يتم تنفيذ كتلة else وتخرج من الدالة باستخدام return. إذا كانت القيمة الاختيارية تحتوي على قيمة، يتم فك تغليفها وتظل متاحة لبقية نطاق (scope) الدالة.

يعالج نمط "الخروج المبكر" (early exit) هذا حالات الخطأ مسبقاً، مما يحافظ على نظافة المنطق البرمجي الأساسي وبدون إزاحة (unindented).

جرّب بنفسك

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

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

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