
guard let a = h else { return } בודק את הערך, ואם הוא nil יוצא מהפונקציה. אחרי השורה ה-a כבר אינו אופציונלי.\n.הטקסט המלא של הדקות הראשונות בהרצאה «Optionals: The Guard Let statement» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים אנחנו רוצים להמשיך לדבר על אופצ'ונלס בשיעורים הקודמים ראינו שאופצ'ונלס הם משתנים שיכולים לקבל גם ערך של ניל בנוסף להיותם איזשהו טייפ למשל אינטג'ר אז כאן יש לי למעשה הגיל הוא אינטג'ר שעלול להיות ניל ולכן הגדרנו אותו כאופצ'ונל אינטג'ר ולא כאינטג'ר הגיל באחד השיעורים למדנו גם על הסינטקס הזה הנפלא שנקרא אופצ'ונל ביינדינג ומאוד
המלצתי על הסינטקס הזה כי הוא סינטקס בטוח שעוזר לנו לוודא היטב שהגיל לא ניל בבטחה ואני לא משתמש בו אלא אם כן הוא לא ניל. אנחנו רוצים להסתכל על סינטקס אלטרנטיבי ל-Optional Binding שנקרא Guard Let Statement, בואו נראה.
כאן אנחנו מגדיר משתנה חדש ונקרא לו a ונשווה אותו לערך של h, אחרת אנחנו נרצה לצאת החוצה מהמתון. בואו ננסה להבין מה זאת אומרת. זאת אומרת שהחל מעכשיו יש לי פה משתנה בשם a שהוא לא ניל בוודאות, בואו נראה את זה.
יש לנו כאן משתנה a שהוא לא nil ווידאנו את העניין אנחנו לא נשתמש יותר ב-h כי ה-h הוא מסוכן לשימוש אם אני הגעתי לקוד עד כאן זה סימן ש-a כבר לא nil אחרת הייתי יוצא החוצה מהמתון.
הסינטקס הזה להבדיל מ-optional binding ה-guard let statement מאפשר לי לעבוד כאן בלי להיות בתוך קטע קוד בתוך בלוק של קוד של if זאת אומרת בעזרת גארדלט אנחנו נמנעים מכינון מקוד בתוך בלוק בסדר אם הייתי בתוך e-flat מתחיל לעבוד הפרינט שלי מקונן בתוך משפט ה-e-flat להבדיל
מהפרינט כאן שהוא נמצא בחוץ ואין לי למעשה כינון אז היתרון בלהשתמש בגארדלט עבור אופשונלס עוזר לנו בעצם להימנע מכינון מקוד בתוך קוד זה קוד בתוך בלוק מפעם לפעם אנחנו נעדיף להשתמש באופשונל ביינינג שיש לנו דברים קצרים אבל אם אנחנו רואים שיש לנו הרבה למעשה קוד בתוך קוד, הרבה נסטינג,
אז כדי למנוע חלק מהנסטינג נוכל להשתמש גם ב-Guardlets. ה-Guardlet נוסף בגרסה המאוחרת יותר של Swift כדי לתת מענה בדיוק לעניין הנסטינג. לפני שניפרד אני רוצה לתת דוגמה מקיפה, למשל יש לנו הרבה מקרים שבהם אנחנו קולטים רק חלק מהקלט ולאו דווקא מקבלים את יתר הקלט.
למשל יכול להיות שאני מחליט ששדה מסוים בהרשמה כגון אימייל הוא חובה ולמשל גם פסוורד יהיה שדה חובה בוא ניתן ככה כמה דברים שהם אופציונליים בהרשמה למשל שם משתמש לאו דווקא אנחנו נרצה לקחת שם משתמש בגלל שיש לנו את האימייל אז בוא נגדיר אותה להיות אופציונל אחר כך אנחנו נרצה גם בוא נאמר גילד אוקיי וגם פה אנחנו לא נבקש את זה מהיוזר בצורה
לא להכריח את היוזר לתת לנו ובוא ניקח עוד איזשהו משתנה נגיד מצב משפחתי בסדר אז מריטל גם המצב הזה ככה אנחנו נוותר ליוזר שלנו נכון אנחנו מכריחים אימייל ופסוורד ויתר הפרמטרים אולי נקלוט אותם בשלב מאוחר יותר אז בואו נראה איך אנחנו יכולים להשתמש באופציונלס המשתנים האופציונליים שיהיו לי כאן יהיו כמו
שאמרתי היוזרניים ה-h והמריטל סטטוס בואו נחליט ש-username יהיה סטרינג, age יהיה מספר שלם ואמריטל סטטוס יהיה בוליאני, אוקיי?
אני מציע לכם לעצור כרגע את הסרטון, אני אתן לכם תרגיל, התרגיל אומר להגדיר את שלושת המשתנים האלה בסוגים של המשתנים שהצהרנו, להגדיר את שתי המשתנים האלה כמשתנים לא אופציונליים, ובסופו של דבר התרגיל שלכם אומר להדפיס כאן סיכום של כל הפרטים שהוזנו, הפרטים שבעצם מוכלים במשתנים, יש לי פה חמישה משתנים
ואתם צריכים להציג סיכום של כל הפרטים בצורה מסודרת ויפה בסדר אנחנו רוצים כמובן להשתמש באופשונלס פעם אחת בעזרת גארדלט ופעם נוספת בואו תעשו שימוש באפלט אז זה התרגיל שלכם אני מציע לכם שוב פעם לעצור את הסרטון כרגע ולחזור אליי ולראות פתרון אחרי שפתרתם בעצמכם אז נתראה בעוד מספר דקות בואו נציג פתרון אז אמרנו שנגדיר את האימייל כסטרינג.
אני אקלוט איזשהו אימייל כבר כרגע אז אני לא חייב לרשום שמדובר בסטרינג, נכון? אני יכול להשתמש פה בטייפ אנוטיישן אבל אני גם יכול פשוט להגדיר איזשהו אימייל, למשל אני אגדיר פה איזשהו אימייל TV. נגדיר איזשהו פסוורד שהיוזר כביכול האזין בתיבת טקסט שאת זה נלמד כמובן יותר מאוחר, פס 1-6 ובוא נראה לגבי היוזרניים אני אפשר פה באיזשהו שם להשתמש בכלשהו.
רגע, זה אמרנו שצריך להיות אופצ'ונל, נכון? כדי להגדיר את זה כאופצ'ונל אני חייב פה להשתמש בטייפלוטיישן ואחר כך מותר לי להוסיף את הסימן שאלה.
קומפיינר פה כועס עליי שלא השתמשתי במשתנים ובצדק, אני עוד מעט אשתמש בהם אז הוא יכול להיות רגוע. לגבי הגיל אנחנו רוצים שהוא יהיה אופצ'ונל, נכון?
אז אנחנו נגדיר אותו כאופצ'ונל in בצורה הזאת ונניח שהיוזר דווקא בחר להזין גיל, לגיל הנצחי הנ"ל לגבי מריט על סטטוס אז בוא נאמר שוב פעם החלטנו שזה יהיה אופציונל בוא נאמר שאנחנו נזין פה שכן מצב משפחתי נשוי נשוי רווק כן לגוליאני הזה אוקיי עכשיו לגבי הסיכוי אלה כל האופציונלס שביקשתי להגדיר אלה המשתנים הרגילים שביקשתי
להגדיר פשוט לא אופציונלס נכון פשוט variables או let constants רגילים בוא נראה את הנ"ל להדפיס סיכום בצורה מסודרת אז הסיכום שלי בצורה מסודרת בוא נתחיל ונדפיס אוקיי ברגע שאני רוצה להדפיס את האימייל אז זה לא בעיה יש לנו פה את האימייל נחמד מאוד אני פשוט אדפיס אותו איך אנחנו קוראים לסינטקס הזה
זוכרים אנחנו קוראים לזה סטרינג אינטרפוליישן אז הדפסתי אותו תוך שימוש בסטרינג אינטרפוליישן עד כאן זה נפלא גם לגבי הפסוורד שאותו אולי אתם לא באמת רוצים להדפיס אבל זה היה התרגיל גם לגבי הפסוורד אני יכול לרדת שורה על ידי השימוש
באופרטור הזה /n ואז פשוט להתחיל לרשום פסוור ושוב פעם שימוש ב-String and Depulation בלי שום בעיה עבור המשתנים הרגילים עכשיו לגבי המשתנים הלא רגילים אנחנו צריכים להשתמש ב-E-flat נכון כדי ככה לוודא טוב מאוד שכל המשתנים שלנו הם לא נילד אז אני יכול להגיד E-flat username username שווה ל-user name פסיק וגם נרצה
לוודא ש-h שווה ל-h ו-merital סטטוס שווה ל-merital סטטוס אז בואו נדפיס גם אותם בסדר? בואו נראה שאני עונה כן צריך לפולט וגם כאן תודה רבה לקומפיילר אז בואו נדפיס גם אותם אז הנה אני מדפיס את ה-user name עכשיו כבר הכל תקין נכון? זאת אומרת השתמשתי פה ב-e-flat ואני עכשיו משתמש
אני פשוט אעשה פה שלוש פרויקט סטייטמנט כדי להקל על עצמי קצת את הירידת שורה אין בזה שום בעיה ולגבי מריטל סטאטוס הנה הוא כאן לפניכם