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.
אתגר
קלכתבו פונקציה 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 {
// כתבו כאן את הקוד
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
7קלט/פלט בסיסי
פונקציית ההדפסהאינטרפולציה של מחרוזותקלט באמצעות ReadLineהמרת טיפוסיםחזרה – עד 120חזרה – אמת או שקר3ערכים אופציונליים
מהם ערכים אופציונלייםשליפת ערך באמצעות If LetGuard Letאופרטור איחוד עם Nilסיכום – שליפה בטוחה של ערך9לולאות
לולאת For-Inלולאת Whileלולאת Repeat-WhileBreakContinueחזרה – עצרתטווחים בלולאותלולאה מקוננתחזרה – קלט דינמיתרגלו בעצמכם: Swift אונליין