
var x: Int יכול להכיל מספר בלבד, ואילו טיפוס עם סימן שאלה, כמו Int? או String?, יכול להכיל גם nil.if let name = name בודק שהערך אינו nil. רק בתוך הבלוק הערך זמין לשימוש.הטקסט המלא של הדקות הראשונות בהרצאה «משתנים שיכולים לקבל ערך - Optionals» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים בשיעורים הקודמים דיברנו על משתנים וקבועים והיום אנחנו רוצים לדבר על אופשונלס בואו נתחיל באיזושהי דוגמה והסבר אנחנו רוצים להגדיר משתנה מסוג מספר ואנחנו יכולים לשים בו ערך עכשיו מותר לי בגלל שזה משתנה לשנות לו את הערך ולהדפיס אותו עד כאן שום דבר למעשה לא חדש מה שמעניין אבל זה שבמשתנה x אני
אני יכול לשים אך ורק מספרים בגלל שהטייפ של x הוא טייפ רגיל של int לעומת זאת אני לא יכול לשים בx ניל ניל זה המקבילה של נעל מספר תכנות אחרות אני לא יכול לעשות את זה בוא נראה למה הטייפ של x הוא int בטוויט יש איזשהו טייפ נוסף שאתם לא מכירים אולי והטייפ הזה הוא אופצ'ונל אופצ'ונל אומר יכול להכיל מספר ויכול להכיל גם ניל אוקיי
כמו שאתם רואים עכשיו מותר לי גם לשים כאן מספר או מספרים וגם בסופו של דבר לשים כאן ניל. סוויפט מבדילה למעשה בין משתנים שיכולים להיות ניל לבין משתנים שלא יכולים להיות ניל באף צורה.
היא בעצם עוזרת לנו מאוד מאוד יפה להתמודד עם נילים שיש בסדר אם נעל פה אינטר אקספצ'ן שיכול לקבוע אותם בשפות אחרות. בואו ננסה לתת פה דוגמה לפני שנמשיך ונסביר מה ההערה פה לגבי הפרינט.
אנחנו יכולים להגדיר string כאופציונל בסדר ובצורה הבאה יכול להגדיר name שווה nil את זה אסור לי לעשות נכון אלא אם כן אני אגדיר אותו להיות אופציונל סטרינג אוקיי אופציונל סטרינג הוא לא סטרינג רגיל שבסטרינג רגיל אסור לי לשים nil בוא נבדוק אלא אך ורק באופציונל סטרינג עכשיו הטייפ פה הוא לשיקול דעתכם איזה טייפ שאתם צריכים באותו רגע
אבל האופציונל אומר שמותר לזה להיות גם ניל וגם סטרינג אוקיי יש פה שתי אפשרויות למעשה וצריך לקחת את שתי האפשרויות האלה בחשבון כשבאים לעבוד עם זה למשל בוא בוא רגע נעשה פה רגע השמה אז יש פה שם אוקיי אבל כשאני בא לנסות להדפיס את השם אני בא לנסות לומר אלו ואז לתת את השם נגיד שאני אשרשר את זה בצורה הבאה אז סוויפ מזהירה אותי אוקיי
היא אומרת לי אתה לא יכול לדעת אם יש לך פה סטרינג או שיש לך פה ניל בגלל שאנחנו מדברים פה על משתנה שהוא אופציונל אוקיי? אז בעצם ברגע שאנחנו באים לעבוד עם אופציונלס אנחנו באמת צריכים להיזהר ולבדוק כי אנחנו הגדרנו מראש שיש פה סכנה שהדבר הזה עלול להיות ניל וכשאני בא להשתמש בו סריפט מגנה עליי מהשגיאה
הנפוצה ביותר בעולם שהיא נעל פוינטר אקספצ'ן ואומרת לי אתה לא יכול לעשות את הביטוי הזה אתה צריך לבדוק קודם כל שיש יש name אוקיי עכשיו איך אנחנו נבדוק שיש name אם הפיצ'ר הזה של טיפול בנילים של בדיקת נילים בכל צורה swift הציגה משפט שנקרא optional binding ואומר את הדבר הבא אני אבדוק שהשם הוא לא need ואם השם
לא need אז מותר לי בעצם במשפט תנאי להשתמש בו עכשיו משפט התנאי שונה משפטי תנאי שאנחנו מכירים בדרך כלל זה נקרא optional binding ויש פה סינטקס מיוחד שאומר אם name לא ניל אנחנו נשים name שווה לname