הוספת מתודות למבנים
חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 44 מתוך 80.
מפרק ה־OOP של Lua ידוע לך שטבלאות יכולות להכיל פונקציות, בדיוק כמו כל ערך אחר. צורות יכולות לתאר גם את שדות הפונקציה האלה: כך צורה הופכת לחוזה קטן של נתונים וגם התנהגות.
שדה של מתודה משתמש בתחביר של טיפוס פונקציה שלמדת בפרק הפונקציות. הפרמטר הראשון שלה נקרא בדרך כלל self, כלומר הטבלה שהמתודה שייכת לה, והצורה יכולה אפילו להפנות לעצמה:
type Greeter = {
name: string,
greet: (self: Greeter) -> string,
}כדי לממש את הצורה, שמור פונקציה בשדה ותן לה את הפרמטר self הזה:
local greeter: Greeter = {
name = "Ana",
greet = function(self: Greeter): string
return `Hello, I'm {self.name}`
end,
}כדי לקרוא לה, צריך להעביר בעצמך את הטבלה בתור self: greeter.greet(greeter). באמצעות self, המתודה קוראת את השדות של הטבלה שעליה היא נקראה.
כתיבת הטבלה פעמיים מרגישה מסורבלת, וכבר ידועה לך התרופה של Lua: הנקודתיים. בשיעור הבא נקשר בין התחביר : לצורות הטיפוסיות האלה.
אתגר
קלהוסיפו לצורה מלבן פונקציה שמחשבת את השטח שלה.
- כתבו
type Rectangle = {width: number, height: number, area: (self: Rectangle) -> number}. - צרו
local rect: Rectangleעם רוחב4, גובה6ו-area = function(self: Rectangle): numberשמחזירה אתself.width * self.height. - הדפיסו את
rect.area(rect), ואז אתrect.width.
לחצו על Run Code: הפלט מציג 24 ו-4.
נסו בעצמכם
-- 1) טיפוס Rectangle עם width, height ומתודה לחישוב שטח
-- 2) rect מקומי: Rectangle (width 4, height 6) עם מימוש למתודה לחישוב שטח
-- 3) הדפס את השטח, ואז את הרוחב
כל השיעורים ביחידה מבוא ל-Luau
1תחילת העבודה עם Luau
מהו Luau?למה להשתמש ב-Luau?קוד Luau הראשון שלכםבדיקת טיפוסים ומצבי שגיאהסיכום: מבוא ל-Luau4עבודה עם פונקציות
הגדרת טיפוסים לפרמטרים ולערכי החזרההגדרת טיפוסים לפונקציות אנונימיותפונקציות שאינן מחזירות ערךפרמטרים אופציונלייםערכי ברירת מחדל לפרמטריםערכי ברירת מחדל לבוליאניםפונקציות עם מספר משתנה של ארגומנטיםהגדרת טיפוסי פונקציותסיכום: פונקציות עם טיפוסים2טיפוסי ליבה
מספר, מחרוזת ובוליאניהטיפוס 'any': פתרון מילוטהטיפוס 'unknown'טיפוסי Nil ואופציונלייםהסקת טיפוסים בפעולההצהרות טיפוס מפורשותסיכום: תרגול בטיפוסי ליבה5כינויים, איחודים וחיתוכים
כינויים לסוגים פרימיטיבייםטיפוסי איחודעבודה עם טיפוסי איחודטיפוסים ליטרלייםטיפוסי חיתוךשילוב כינויים לסוגיםסיכום: שילובים מתקדמים של טיפוסים3טבלאות מטיפוס מוגדר: מערכים ומפות
מערכים מטיפוס מוגדרהוספה וקריאה של איבריםמהו טיפוס Map?הגדרה וגישה למפותמעבר על טבלאותטבלאות במבנים מעורביםקריאת רשתבניית רשתtable.unpackסיכום: מערכים ומפות6הוספת טיפוסים למבני טבלה
הערות טיפוס בשורה למבניםכינויי טיפוס למבניםמאפיינים אופציונלייםמבנים לעומת טבלאות לא מובנותהרחבת מבניםהוספת מתודות למבניםSelf ומתודות עם נקודתייםסיכום: הגדרת מבני טבלהתרגלו בעצמכם: קומפיילר Luau אונליין