PracticU

Optionals: The Guard Let statement

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode › Optionals: The Guard Let statement
מילון מושגים:
תחביר - אוסף הכללים של שפת תכנות הקובעים כיצד לכתוב קוד תקין. הפרתם גורמת לשגיאת תחביר.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
סיסמה - מחרוזת תווים סודית שמשמשת לאימות זהות המשתמש בעת כניסה למערכת. ככל שהיא ארוכה ומורכבת יותר, כך קשה יותר לנחש אותה.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.

Optionals: The Guard Let statement
מוצג guard let, סינטקס חלופי ל-optional binding שמונע קינון קוד בתוך בלוק if, ותרגיל שמשווה בין if let ל-guard let.
צעדי העבודה
1. הרעיון: guard let a = h else { return } בודק את הערך, ואם הוא nil יוצא מהפונקציה. אחרי השורה ה-a כבר אינו אופציונלי.
2. יתרון: הקוד נשאר ברמה אחת, בלי קינון בתוך if. זה משפר את הקריאות כשיש הרבה בדיקות.
3. התרגיל: שם המשתמש, הגיל והמצב המשפחתי הם אופציונליים, והאימייל והסיסמה הם חובה. בסוף מודפס סיכום מסודר.
4. פתרון עם if let: כל משתנה אופציונלי נבדק בתנאי, והסיכום מודפס בתוך הבלוק.
5. פתרון עם guard let: בודקים את כל המשתנים בתחילת הפונקציה, ואחר כך מדפיסים בלי תנאים נוספים.
הערות
אפשר לבדוק כמה משתנים בשורה אחת, והשיעור מציג גם ירידת שורה בתוך מחרוזת בעזרת \n.
כעת משווים בין if let ל-guard let, ויודעים לבדוק כמה ערכים בבת אחת.
השיעור הבא בקורס: המרה בין סוגי משתנים - Type Conversion

פרקי ההרצאה: Optionals: The Guard Let statement

  1. 00:00

    סיכום Optional והצגת Guard Let

  2. 00:58

    הבטחה שהערך אינו nil אחרי Guard Let

  3. 01:37

    מניעת נסטינג עם Guard Let

  4. 02:14

    דוגמה: שדות חובה ושדות אופציונליים בהרשמה

  5. 03:27

    תרגיל: הגדרת שדות כ-Optional או כרגילים

  6. 04:23

    פתרון התרגיל: הגדרת המשתנים כ-Optional

  7. 05:57

    הדפסת סיכום הפרטים עם String Interpolation

  8. 06:34

    בדיקת משתנים אופציונליים עם Guard Let

תמלול ההרצאה: Optionals: The Guard Let statement

הטקסט המלא של הדקות הראשונות בהרצאה «Optionals: The Guard Let statement» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום וברוכים הבאים אנחנו רוצים להמשיך לדבר על אופצ'ונלס בשיעורים הקודמים ראינו שאופצ'ונלס הם משתנים שיכולים לקבל גם ערך של ניל בנוסף להיותם איזשהו טייפ למשל אינטג'ר אז כאן יש לי למעשה הגיל הוא אינטג'ר שעלול להיות ניל ולכן הגדרנו אותו כאופצ'ונל אינטג'ר ולא כאינטג'ר הגיל באחד השיעורים למדנו גם על הסינטקס הזה הנפלא שנקרא אופצ'ונל ביינדינג ומאוד

  2. 00:27

    המלצתי על הסינטקס הזה כי הוא סינטקס בטוח שעוזר לנו לוודא היטב שהגיל לא ניל בבטחה ואני לא משתמש בו אלא אם כן הוא לא ניל. אנחנו רוצים להסתכל על סינטקס אלטרנטיבי ל-Optional Binding שנקרא Guard Let Statement, בואו נראה.

  3. 00:45

    כאן אנחנו מגדיר משתנה חדש ונקרא לו a ונשווה אותו לערך של h, אחרת אנחנו נרצה לצאת החוצה מהמתון. בואו ננסה להבין מה זאת אומרת. זאת אומרת שהחל מעכשיו יש לי פה משתנה בשם a שהוא לא ניל בוודאות, בואו נראה את זה.

  4. 01:02

    יש לנו כאן משתנה a שהוא לא nil ווידאנו את העניין אנחנו לא נשתמש יותר ב-h כי ה-h הוא מסוכן לשימוש אם אני הגעתי לקוד עד כאן זה סימן ש-a כבר לא nil אחרת הייתי יוצא החוצה מהמתון.

  5. 01:16

    הסינטקס הזה להבדיל מ-optional binding ה-guard let statement מאפשר לי לעבוד כאן בלי להיות בתוך קטע קוד בתוך בלוק של קוד של if זאת אומרת בעזרת גארדלט אנחנו נמנעים מכינון מקוד בתוך בלוק בסדר אם הייתי בתוך e-flat מתחיל לעבוד הפרינט שלי מקונן בתוך משפט ה-e-flat להבדיל

  6. 01:40

    מהפרינט כאן שהוא נמצא בחוץ ואין לי למעשה כינון אז היתרון בלהשתמש בגארדלט עבור אופשונלס עוזר לנו בעצם להימנע מכינון מקוד בתוך קוד זה קוד בתוך בלוק מפעם לפעם אנחנו נעדיף להשתמש באופשונל ביינינג שיש לנו דברים קצרים אבל אם אנחנו רואים שיש לנו הרבה למעשה קוד בתוך קוד, הרבה נסטינג,

  7. 02:04

    אז כדי למנוע חלק מהנסטינג נוכל להשתמש גם ב-Guardlets. ה-Guardlet נוסף בגרסה המאוחרת יותר של Swift כדי לתת מענה בדיוק לעניין הנסטינג. לפני שניפרד אני רוצה לתת דוגמה מקיפה, למשל יש לנו הרבה מקרים שבהם אנחנו קולטים רק חלק מהקלט ולאו דווקא מקבלים את יתר הקלט.

  8. 02:25

    למשל יכול להיות שאני מחליט ששדה מסוים בהרשמה כגון אימייל הוא חובה ולמשל גם פסוורד יהיה שדה חובה בוא ניתן ככה כמה דברים שהם אופציונליים בהרשמה למשל שם משתמש לאו דווקא אנחנו נרצה לקחת שם משתמש בגלל שיש לנו את האימייל אז בוא נגדיר אותה להיות אופציונל אחר כך אנחנו נרצה גם בוא נאמר גילד אוקיי וגם פה אנחנו לא נבקש את זה מהיוזר בצורה

  9. 02:55

    לא להכריח את היוזר לתת לנו ובוא ניקח עוד איזשהו משתנה נגיד מצב משפחתי בסדר אז מריטל גם המצב הזה ככה אנחנו נוותר ליוזר שלנו נכון אנחנו מכריחים אימייל ופסוורד ויתר הפרמטרים אולי נקלוט אותם בשלב מאוחר יותר אז בואו נראה איך אנחנו יכולים להשתמש באופציונלס המשתנים האופציונליים שיהיו לי כאן יהיו כמו

  10. 03:24

    שאמרתי היוזרניים ה-h והמריטל סטטוס בואו נחליט ש-username יהיה סטרינג, age יהיה מספר שלם ואמריטל סטטוס יהיה בוליאני, אוקיי?

  11. 03:37

    אני מציע לכם לעצור כרגע את הסרטון, אני אתן לכם תרגיל, התרגיל אומר להגדיר את שלושת המשתנים האלה בסוגים של המשתנים שהצהרנו, להגדיר את שתי המשתנים האלה כמשתנים לא אופציונליים, ובסופו של דבר התרגיל שלכם אומר להדפיס כאן סיכום של כל הפרטים שהוזנו, הפרטים שבעצם מוכלים במשתנים, יש לי פה חמישה משתנים

  12. 03:59

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

  13. 04:33

    אני אקלוט איזשהו אימייל כבר כרגע אז אני לא חייב לרשום שמדובר בסטרינג, נכון? אני יכול להשתמש פה בטייפ אנוטיישן אבל אני גם יכול פשוט להגדיר איזשהו אימייל, למשל אני אגדיר פה איזשהו אימייל TV. נגדיר איזשהו פסוורד שהיוזר כביכול האזין בתיבת טקסט שאת זה נלמד כמובן יותר מאוחר, פס 1-6 ובוא נראה לגבי היוזרניים אני אפשר פה באיזשהו שם להשתמש בכלשהו.

  14. 05:02

    רגע, זה אמרנו שצריך להיות אופצ'ונל, נכון? כדי להגדיר את זה כאופצ'ונל אני חייב פה להשתמש בטייפלוטיישן ואחר כך מותר לי להוסיף את הסימן שאלה.

  15. 05:11

    קומפיינר פה כועס עליי שלא השתמשתי במשתנים ובצדק, אני עוד מעט אשתמש בהם אז הוא יכול להיות רגוע. לגבי הגיל אנחנו רוצים שהוא יהיה אופצ'ונל, נכון?

  16. 05:22

    אז אנחנו נגדיר אותו כאופצ'ונל in בצורה הזאת ונניח שהיוזר דווקא בחר להזין גיל, לגיל הנצחי הנ"ל לגבי מריט על סטטוס אז בוא נאמר שוב פעם החלטנו שזה יהיה אופציונל בוא נאמר שאנחנו נזין פה שכן מצב משפחתי נשוי נשוי רווק כן לגוליאני הזה אוקיי עכשיו לגבי הסיכוי אלה כל האופציונלס שביקשתי להגדיר אלה המשתנים הרגילים שביקשתי

  17. 05:51

    להגדיר פשוט לא אופציונלס נכון פשוט variables או let constants רגילים בוא נראה את הנ"ל להדפיס סיכום בצורה מסודרת אז הסיכום שלי בצורה מסודרת בוא נתחיל ונדפיס אוקיי ברגע שאני רוצה להדפיס את האימייל אז זה לא בעיה יש לנו פה את האימייל נחמד מאוד אני פשוט אדפיס אותו איך אנחנו קוראים לסינטקס הזה

  18. 06:12

    זוכרים אנחנו קוראים לזה סטרינג אינטרפוליישן אז הדפסתי אותו תוך שימוש בסטרינג אינטרפוליישן עד כאן זה נפלא גם לגבי הפסוורד שאותו אולי אתם לא באמת רוצים להדפיס אבל זה היה התרגיל גם לגבי הפסוורד אני יכול לרדת שורה על ידי השימוש

  19. 06:28

    באופרטור הזה /n ואז פשוט להתחיל לרשום פסוור ושוב פעם שימוש ב-String and Depulation בלי שום בעיה עבור המשתנים הרגילים עכשיו לגבי המשתנים הלא רגילים אנחנו צריכים להשתמש ב-E-flat נכון כדי ככה לוודא טוב מאוד שכל המשתנים שלנו הם לא נילד אז אני יכול להגיד E-flat username username שווה ל-user name פסיק וגם נרצה

  20. 06:56

    לוודא ש-h שווה ל-h ו-merital סטטוס שווה ל-merital סטטוס אז בואו נדפיס גם אותם בסדר? בואו נראה שאני עונה כן צריך לפולט וגם כאן תודה רבה לקומפיילר אז בואו נדפיס גם אותם אז הנה אני מדפיס את ה-user name עכשיו כבר הכל תקין נכון? זאת אומרת השתמשתי פה ב-e-flat ואני עכשיו משתמש

  21. 07:27

    אני פשוט אעשה פה שלוש פרויקט סטייטמנט כדי להקל על עצמי קצת את הירידת שורה אין בזה שום בעיה ולגבי מריטל סטאטוס הנה הוא כאן לפניכם

לקורס המלא: קורס פיתוח אפליקציות לאייפון

ההרצאה הקודמת: Optionals: The nil coalescing operator

ההרצאה הבאה: המרה בין סוגי משתנים - Type Conversion

הרצאות קשורות מקורסים אחרים

  • Guard CanActivate
  • פונקצית Multi Statement
  • פריצה של Remote Credentials Guard - עם Meterpreter

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון