Menu
Coddy logo textTech

Self ומתודות עם נקודתיים

חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 43 מתוך 73.

כתיבה של rect.area(rect) עובדת, אבל למדת דרך טובה יותר עוד בפרק על OOP ב-Lua: הנקודתיים. הקריאה rect:area() זהה לחלוטין: Lua מעבירה אוטומטית את הטבלה שלפני הנקודתיים בתור הארגומנט הראשון, self.

הנקודתיים עוזרות גם במקום שבו מגדירים את הפונקציה. function account:deposit(amount) מכריזה עבורך על פרמטר ראשון מוסתר בשם self:

type Account = {
    owner: string,
    balance: number,
    deposit: (self: Account, amount: number) -> (),
    getBalance: (self: Account) -> number,
}

local account = {owner = "Maya", balance = 1500}

function account:deposit(amount: number)
    self.balance += amount -- self משתמע מאליו
end

function account:getBalance(): number
    return self.balance
end

שימו לב שהמבנה מצהיר על self במפורש, deposit: (self: Account, amount: number) -> (), אף שהנקודתיים מסתירות אותו במימוש. הנקודתיים הן קיצור תחבירי; הפרמטר עדיין קיים, והטיפוס מציין אותו במפורש. פונקציה שלא מחזירה דבר מוגדרת עם ערך החזרה ריק -> ().

הקריאה פועלת לפי אותו כלל שכבר מוכר לכם: account:deposit(250) זהה ל-account.deposit(account, 250). התנהגות זהה בזמן ריצה לזו שבפרק על OOP: Luau רק מוסיפה טיפוסים.

challenge icon

אתגר

קל

צרו כינוי טיפוס בשם Account עם:

  • owner מטיפוס string
  • balance מטיפוס number
  • deposit: (self: Account, amount: number) -> ()
  • getBalance: (self: Account) -> number

צרו טבלה בשם account עם בעלים "Maya" ויתרה 1500, ואז צרפו את שתי המתודות באמצעות תחביר הגדרה עם נקודתיים (function account:deposit(amount: number) …). deposit מוסיפה את amount ליתרה; getBalance מחזירה את היתרה הנוכחית.

באמצעות קריאות עם נקודתיים:

  1. הדפיסו את היתרה
  2. הפקידו 250
  3. הדפיסו שוב את היתרה
  4. הדפיסו את הבעלים

נסו בעצמכם

-- כתבו כאן קוד
-- 1) הגדירו את הטיפוס Account (המתודות כוללות את self במפורש בהגדרת הטיפוס)
-- 2) צרו את הטבלה של Account, ואז הוסיפו את deposit/getBalance באמצעות תחביר הנקודתיים
-- 3) הדפיסו את היתרה, הפקידו 250, הדפיסו שוב את היתרה, והדפיסו את הבעלים
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה מבוא ל-Luau

תרגלו בעצמכם: קומפיילר Luau אונליין