
switch ב-Swift בוחן ערך ומשווה אותו למקרים שונים. השיעור מראה את הסינטקס, את החובה לכסות את כל האפשרויות ואת השימוש בו על enum.switch על משתנה, ולכל מקרה כותבים case עם הערך לבדיקה ואת הפעולה שתתבצע.if ו-else.default מטפל במקרה שלא מתאים לאף מקרה אחר..sunday בלי שם הטיפוס, כי Swift כבר יודעת איזה טיפוס זה.default מקבלים שגיאה, ואפשר להשלים את המקרים החסרים בעזרת ההשלמה האוטומטית.guard let, ושם היום בעברית מוצג בעזרת ה-switch שבתוך ה-enum.הטקסט המלא של הדקות הראשונות בהרצאה «ביטויי Switch Case» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים אנחנו רוצים להתחיל לדבר היום על סוויץ' קייסים דרך אגב כאן למטה יש לנו את הכפולה שכתבנו בשיעור הקודם שמגרילה מספרים רנדומליים סוויץ' קייס הוא פשוט ביטוי השוואתי שעוזר לנו לבדוק ערך ולהשוות אותו למספר מסוים של מקרים למשל אני יכול להגדיר את x להיות מספר רנדומלי בין 0 ל-100 עכשיו אנחנו יכולים או בוא נעשה
יותר קצר בין 0 ל-3 עכשיו אנחנו יכולים להגיד שיש לנו מקרה ראשון שהx שלנו switch על x אנחנו רוצים להתחיל לבחון את x עכשיו על הסוויץ' בסדר נבחן אותו את x את הערך שלו מה הוא יצא אני אבדוק מקרה ראשון 1 ואני אגדיר פה print nice level שלב נחמד 1 זה שלב נחמד עכשיו אם אנחנו כבר באיזשהו שלב 2 אז מגניב
נכון 2 קול ואני אני יודע שתכלס זה יכול להיות מספר בין 0 ל-3 אז אני אגדיר עוד קייס אחד להיות 0, אין שלב כזה.
עכשיו default זה מה יקרה אם זה לא אף אחד מהמקרים בין 0 ל-2 אז זה בעצם חייב להיות 3 נכון? בוא נרשום לעצמנו ככה print 3. אוקיי בואו ננסה להריץ את זה ונראה מה אנחנו מקבלים פה.
אנחנו תמיד מדפיסים משהו בכל אחד מהמקרים של x, מגרילים מספר x ואז הוא אומר לי יצא לך אחד יופי של שלב זה בעצם מה שהוגרל כמובן שהתוצאה פה הפלט תלוי במה שהוגרל לכם באותו רגע יפה מאוד אז סוויץ' בעצם נותן לנו לקחת איזשהו ערך לבחון אותו סוויץ' על איקס עוזר לי לבחון את הערך של איקס ולבדוק האם הערך של איקס מתאים לאחד מהקייסים לאחד מהמקרים הבאים האם זה 0 1 או 2 או שמא
זה משהו אחר בסדר דיפולט זה לא אף אחד מהמקרים זה כמו להגיד איף x שווה 0, אלס איף x שווה 1, אלס איף x שווה 2 וכן הלאה. ופה זה בעצם ה... נכון, זה כמו אלס, אוקיי?
עכשיו, סוויץ' קייס הוא פשוט יותר נעים, יותר נוח לעבודה, יותר קריב ויותר מבטא את העובדה שרציתי ממש פה לבחון את x, אוקיי?
אז סוויץ' קייסים, ביטוי מאוד נחמד שעוזר לי לבחון ערך. איך זה מתקשר לאינאמים מהשיעורים הקודמים? בעזרת סוויץ' קייס אנחנו גם יכולים לבחון אינם ולבחון מה יצא לו הערך.
בואו נראה את זה באינם של day שכבר כתבנו בשיעורים הקודמים. אז יש לי פה איזשהו אינם ואנחנו רוצים אולי להדפיס את השם של היום בעברית. אז איך נעשה את זה?
בואו נראה. זה די דומה למה שיש כאן. אני פשוט לא רוצה להגריל מספר רנדומלי אלא אני רוצה לקחת יום. בואו נעשה פה יום. אני אגריל let d שווה יום מסוים לבחירה.
איך נגריל יום, אתם יודעים? אפשר קודם כל להגריל מספר let r שווה get random מ-0 עד כמה, אתם יודעים? מ-0 עד 7, ואני לא רוצה את 0, נכון? אז בוא נעשה מ-0 עד 6 ונוסיף לזה 1, מבינים?
אם אני מגריל מספר בין 0 ל-6 כולל ומוסיף לו 1, אני מתחיל לקבל מספרים בין 1 עד 7. זה טריק חשוב, כדאי שתכירו אותו, וזה לגמרי מגניב שיצאנו לדבר על זה, אז אני שמח.
אני גרלתי פה מספר לא בין 0 ל-6 אלא בין 1 ל-7 על ידי זה שעשיתי פה הזזה. עכשיו אם אנחנו רוצים להגריל יום אז let d=day אנחנו נרצה לתת לו row value מהערך של המספר שהוגרל וזה יכול לצאת איזשהו יום ועכשיו יש לי כבר לא סתם מספר רנדומלי אלא יום רנדומלי שזה נחמד לכשעצמו רק דבר אחד שאני רוצה לציין הדבר הזה הוא
אופשונל כמו שדיברנו בשיעורים הקודמים ולכן בואו נבדוק באמת שיש לנו ערך אחרת נצא החוצה מהפעולה אז אני אשתמש פה ב-guard let על הדבר הזה אחרת צא החוצה מהפעולה יש לנו פה משהו לא תקין זה אף פעם לא יקרה דרך אגב יופי אז יש לנו יום רנדומלי אני יכול להדפיס אותו אבל זה לא בדיוק מה שאני רוצה אני לא רוצה להדפיס את היום באנגלית כמו שכתוב כאן אני רוצה להדפיס את היום בעברית אני רוצה לבדוק
אם זה יום ראשון נדפיס בעברית ראשון וכן הלאה. איך נעשה את זה? כמו שדיברנו קודם, נכון? עם הסוויץ' קייס הזה.
איך עובדים סוויץ' קייס באינאמי? בואו נבדוק. הדבר הראשון שאני רוצה לעשות זה סוויץ' על היום, על ה-D, נכון? D הוא יום פה, אוקיי?
עכשיו, איזה מקרים יכולים להיות לי? סנדיי, מאנדיי, טיוסדיי, אלה המקרים. כדי לעשות את זה אני יכול לרשום day.sunday ולהדפיס ראשון במקרה הזה. אופס רגע ראשון יופי עכשיו יש לנו עוד מקרים נכון דרך אגב עוד משהו מעניין ומשעשע אני לא חייב לרשום day.sunday מספיק שאני ארשום .sunday למה כי swift כבר יודעת את הטייפ של הינה היא יודעת שזה day וכל מה שנשאר לי להגיד זה .sunday בואו ניקח את זה לבדיקה
אני אעשה פה קייס נוסף .monday והופ יש לי אפילו השלמה אוטומטית על הדבר הזה בואו נדפיס פה יום שני יפה רגע מה חסר לי? נקודותיים, נכון? מצוין.
עכשיו, מה זה default? זה אומר לא ראשון ולא שני, נכון? בוא נעשה פה אולי print default. לא ראשון ולא שני, זה יכול להיות שלישי, רביעי, חמישי, שישי ושבת.
זה אחד מהימים האלה. שלוש עד שבע.