
הטקסט המלא של הדקות הראשונות בהרצאה «רב-צורתיות, בדיקת סוג משתנה בזמן ריצה והמרת סוג המשתנה» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים אנחנו רוצים לדבר היום על ירושה, פולימורפיזם והמרה בין סוגי משתנים בסוויפט. אז בואו נתחיל כדי להתחיל אנחנו רוצים לייצר לעצמנו לא פרויקט הפעם כי אם פלייגראונד אז אנחנו הולכים לאקסקוד ומייצרים פייל ניו פלייגראונד הסוג של פלייגראונד הוא פלאן פלייגראונד ואנחנו נלחץ כאן על נקס אני אקרא לפלייגראונד
שלי typecasting.swift ונשמור אותו בספרייה שבה אני שומר את כל הפרויקטים. אוקיי אז הנה הפלייגראונד שלי כמובן אני ארצה להריץ את הפלייגראונד כדי לראות שהוא רץ ואני אגדיל את זה להיות על מסך גדול אוקיי אז הנה פלייגראונד פלייגראונד פשוט מאפשר לנו לראות את התוצאה של ההרצה די מהר
גם פה בצד ימין וגם בחלק התחתון אם תהיינה לי הדפסות למשל אם אני אדפיס פה את הסטרינג הזה שמוגדר לנו כבר אוטומטית בפלייגראונד אז הוא יודפס פה למטה אבל גם בצד ימין אז איך שנוח לכם יפה אנחנו רוצים בשביל להתחיל לייצר איזשהו קלאס שנקרא קלאס של מדיה סתם קלאס רגיל לגמרי בשביל הדוגמה הפשוט והקלאס הזה מייצג מחלקת בסיס שממנה ירשו
המחלקות מובי וסונג בשביל לעשות ירושה אני מניח דרך אגב שאתם מכירים ירושה ואני רק מראה לכם את הסינטקס בסוויפט אני לא נכנס פה לפסיכולוגיה של ירושה מתי כדאי וכן הלאה כי אני שוב פעם מתוך נקודת הנחה שכבר עשיתם את זה בקורסים נוספים אז מה שאני עושה, אני
מדגים מבחינה טכנית איך לבצע. אז אנחנו מייצרים לעצמנו name מסוג String, וכמובן באותו רגע, ברגע שיש לי קלאס, אין לנו בקלאס יצירה אוטומטית של בנאים, באותו רגע התחייבתי בעצם לייצר לי פה בנאי.
בואו נייצר את הבנאי. אז יש לי name מסוג String, ואותו אני צריך כמובן לשמור לעצמי, התפקיד הלוב של הבנה היא להתחיל את התכונות אז עכשיו הקומפיילר אמור להיות מרוצה ולרדת מההערה הזאת כל פעם כשאתם נותנים לעצמכם מלא הסברים או נותנים למישהו אחר מלא הסברים זה סימן שאנחנו פשוט צריכים להוסיף הערות בסדר פשוט כדי לתעד את הקוד שלנו
שיהיה קריט טוב ויפה אני אתן פה הערה למשל המרה בין סוגי משתנים שזה מה שאנחנו רוצים ללמוד היום אני דרך אגב לא ממליץ לתעד בעברית הסיבה שאני מתעד בעברית זה בגלל שאנחנו מעבירים פה הרצאה ועבור הרצאה זה נוח לכם שאני אתעד את זה בעברית.
בסדר? אז המחלקה מדיה, כפי שאמרתי, הינה מחלקת אב, ממנה יורשים המחלקות האחרות movie והמחלקה צום. זה הכל, זה מה שרציתי לומר פה.
כהערת אגב מעניינת ונחמדה, אני משתמש פה בהערות מיוחדות לפלייגראונד שאחר כך יכולות להיראות כמו ספר. למשל אם אנחנו נבקש ככה באדיטור להציג לנו את הרנדרד מארקר, אז אתם רואים ההערות שלי ככה לא היו במקרה אלא נחמדות יותר וככה בסוף של השיעור יהיה לנו סיכום נחמד של השיעור בדומה למעין מצגת שכזאת אז אני אצמיד פה את הטקסט לרבי שזה ייראה
יפה אז יש לנו קלאס מדיה והקלאס הזה הוא מחלקת בסיס בואו נירש ממדיה איך יורשים ממדיה אנחנו נייצר קלאס מובי כמובן וכדי לרשת כמו שאתם בטח ניחשתם הנקודותיים פה עושות את העבודה ירשתי ממדיה זה הכל אקסטנטס אוקיי בשפות אחרות עכשיו אנחנו נרצה שבמובי יהיה לנו תכונות נוספות ככה זה בהרחבה רוצים באקסטנטשנים באקסטנטס רוצים להוסיף משהו תמיד
אז בואו נייצר לעצמנו את הדירקטור של הסרט שהוא סטרינג וכבר באותו רגע איבדתי את הבנאי שקיבלתי בחינם ואני צריך לייצר לעצמי בנאי חדש מה הדבר הזה רוצה מאיתנו הוא רוצה שאני פשוט אשים פה סטרינג רג ואז אני לא אהיה חייב לעשות בנאי זה לא חכם במיוחד אני באמת רוצה בנאי בכל מיני
מחלקות שאני מייצר אז בואו נבקש גם את ה-Name מסוג String וגם את ה-Director מסוג String אוקיי אז נשמור אותם כמובן עכשיו נשים לב מה שאני עושה פה מבחינת הסדר זה שאני קודם שומר לעצמי את ה-Self Director ורק אחר כך אני פונה לעינית של האבא שזה הפוך ב-Java למשל בסדר אז ב-Java אנחנו קודם קוראים לסופר
ובסוויפט אנחנו קודם שומרים את התכונות ואחר כך מעבירים לסופר. מה נעביר לסופר? את ה-name. אז הנה לכם חברים וחברות הביצוע של ירושה והעברה של פרמטרים לסופר או למחלקת העבודה.
אוקיי אז הנה יש לנו קלאסט ראשון עכשיו בואו נעשה קלאסט שני אני פשוט אעתיק את הקלאסט הזה של מובי ואנחנו נעשה קלאסט סונג לסונג אנחנו לא נרצה דירקטור אלא אנחנו נרצה ארטיסט בסדר וכל מקום שכתוב פה דירקטור אני אתקן לארטיסט ובזה יש לנו עוד ירושה הנה כל מה שעשינו עד עכשיו אין לי פה
הרבה הדפסות כי בסך הכל הגדרנו פה קלאסים אז נפטרנו פה מכל ההדפסות ואני מציג לפניכם את המסך המלא הגדרה של מחלקה רגילה הגדרה של מחלקה יורשת ומחלקה יורשת נוספת בואו נעבור להסתכל על פולימורפיזם של ירושה בסדר בואו אני אעתיק מפה את הערת תיעוד הזאת הנחמדה ואני אשים הערת תיעוד חדשה ופה אנחנו במקום לרשום המרה בין סוגים משתנים
אנחנו נרשום פולימורפיזם בירושה במקרה של ירושה בסדר עכשיו אני ארצה להגדיר לעצמי כמובן מערך שמכיל את כל סוגי המדיה אוקיי בואו נראה איך זה הולך אז אנחנו נגדיר לעצמנו איזשהו let library ואנחנו כמו שאמרנו זה יהיה מערך והמערך הזה יכיל את כל סוגי המדיה, הוא
יכול להכיל גם מובי וגם סונג, בסדר? אז בוא נעשה את זה. הכנסתי פה מובי אחד, אנחנו נלך פה על כל מיני סרטים שאנחנו הכנו מראש, The One and Only, איזשהו סרט, והבימאי הוא לא אחר מאשר שסני פוקס, בסדר?
נגיד, הנה סרט אחד, עכשיו, מה שאני רוצה גם לעשות, ואני רוצה להוסיף לכאן גם איזשהו סונג אז אני אעשה פסיק ובוא נגיד אנחנו רוצים להוסיף בייבי can I hold you by Tracy Chapman יפה עכשיו שמתם לב שבאותו מערך אני בעצם מכיל סוגי מדיה שונים זה ביטוי לפולימורפיזם ושתי הדברים האלה הם בעצם יורשים נכון אז מה הטייפ של ליבררי בוא נראה
הטייפ של ליבררי הוא Inferred Libert Media שזה לגמרי מערך של מדיה שזה לגמרי מגניב נכון זה לגמרי ככה סונג ומדיה וגם מובי ומדיה בסוויפט לא פספסה את זה והגדירה את זה להיות מערך של מדיה.
האמת היא שבסוויפט יש עוד טייפים, למשל הייתי יכול להגדיר את זה במקום להיות מערך של מדיה כמו שאם היינו רוצה להגדיר את הטייפ בצורה מפורשת אז הייתי מגדיר אותו ככה נכון?
מדיה הרי. אבל בסוויפט יש טייפים נוספים שכדאי להתייחס אליהם הפעם. אני יכול להגיד שזה מערך של any, any זה כל דבר זה אומר כל אובייקט וגם לא אובייקט.
מה זה לא אובייקט? זה יכול להיות אינם וזה יכול להיות סטראקט זה לא רק קלאסי בסדר אם אני רוצה שזה יהיה כל אובייקט אז זאת אומרת רק מופע של מחלקות כלשהן וזה בסדר כי באמת יש לי פה רק אובייקטים אז any object זה מופעים של מחלקות any זה כל דבר זה גם מחלקות וגם נגיד שימו לב ב-any object אני לא יכול להוסיף מספר למה כי מספרים
מוגדרים כסטראקצ'רס בסוויפט בסדר אי אפשר להכניס אינט ל-any object שימו לב מספר בסוויפט רק שככה נהיה סגורים וגם סטרינגים וכל המשתנים שאתם מכירים מהשפה הם מוגדרים כסטראקטים כל משתנה שאתם לא יודעים אתם מוזמנים פשוט לכתוב את השם של המשתנה ולעשות קומנד וקליק כדי לקפוץ להגדרות כאן כדי לבדוק בסדר אז הדבר הזה אינטג'ר טענה שלי int is a struct
הוא לא יכול להיכנס למערך של אובייקטים של any object של כל אובייקט כן יכול להיכנס למערך של כל דבר. מה זה כל דבר? מערך של Any.
בסדר? אנחנו אבל לא נרצה אף פעם לשים מספרים ביחד עם מדיה, זה קצת לא חכם. מה שכן חכם זה להשתמש בחוכמה, כמו שבני אדם אומרים בספריית מדיה יש כל מיני סוגים של מדיה, אז בוודאי שאנחנו נרצה שהדבר הזה יהיה Inferred להיות Media Type. אם אני לא אכתוב כלום זה גם מה
שיקרה כי Swift מאוד מאוד חכמה. יפה מאוד, אז ראינו כבר שאנחנו יכולים לארגן לעצמנו מערכים שמכילים את כל סוגי המשתנים, וסוויפט מתייחסת למובי קל-מדיה וגם לסונג קל-מדיה, ואז אנחנו גם יכולים לכתוב פונקציות שמקבלות מדיה ולהעביר אליהם את הסרטים ואת השירים לרכישה או להשכרה.
אוקיי, רק רציתי להראות לכם עוד דבר אחד היום בשיעור שזה בעצם אופרטורים עבור בדיקה של טייפ טייפ צ'קינג וגם עבור קאסטינג טייפ קאסטינג בסדר המרה