Menu
Coddy logo textTech

הגדרת טיפוסים לפונקציות אנונימיות

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

ב-Lua, פונקציות הן ערכים: אחסנת אותן במשתנים והעברת אותן הלאה: local f = function(x) return x * 2 end. לפונקציות האנונימיות האלה (ביטויי פונקציה) יש בדיוק אותן הערות טיפוסים כמו לפונקציות בעלות שם:

local double = function(x: number): number
    return x * 2
end

local shout = function(text: string): string
    return string.upper(text) .. "!"
end

הפרמטרים מקבלים name: type בתוך הסוגריים, וסוג הערך המוחזר מופיע אחרי הסוגריים הסוגרים: ההבדל היחיד מפונקציה בעלת שם הוא שלמילת המפתח function אין שם, וכל הביטוי מוקצה למשתנה.

אם התנסית ב-JavaScript או ב-TypeScript, שים לב של-Luau אין פונקציות חץ. אין תחביר של =>. כל ביטוי פונקציה נכתב בצורה function ... end, בין שהוא ארוך ובין שהוא קצר.

לאחר שמקצים אותן, קוראים להן דרך המשתנה כמו לכל פונקציה: double(21) מחזירה 42, והבודק מוודא שכל קריאה תואמת להערות שכתבת.

challenge icon

אתגר

קל

כתבו מחדש את הפונקציה בעלת השם הזו כפונקציה אנונימית המאוחסנת במשתנה מקומי, תוך שמירה על כל הערות הטיפוס:

function subtract(a: number, b: number): number
    return a - b
end

כלומר: צרו local subtract = function(...) ... end עם אותם טיפוסים של הפרמטרים ושל ערך ההחזרה.

לאחר מכן צרו שתי פונקציות אנונימיות מטיפוסות נוספות:

  • createMessage: מקבלת text: string, מחזירה את המחרוזת "Message: [text]" (טיפוס ההחזרה string)
  • isPositive: מקבלת num: number, מחזירה true אם המספר גדול מ־0, אחרת false (טיפוס ההחזרה boolean)

קראו להן והדפיסו את התוצאה, כל אחת בשורה נפרדת:

  1. subtract(10, 3)
  2. createMessage("Hello World")
  3. isPositive(-5)
  4. isPositive(8)

נסו בעצמכם

-- כתבו את הקוד כאן
-- local subtract = function(a: number, b: number): number ... end
-- local createMessage = function(text: string): string ... end
-- local isPositive = function(num: number): boolean ... end
-- לאחר מכן הדפיסו את ארבע התוצאות
quiz iconבחנו את עצמכם

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

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

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