Menu
Coddy logo textTech

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]" עם הערך שחולץ.

דוגמה: אם age הוא 25, החזירו "Age: 25". אם age הוא nil, החזירו "Invalid age".

נסו בעצמכם

func validateAge(age: Int) -> String {
    // כתבו כאן את הקוד
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: Swift אונליין