Menu
CoddyTech

פונקציית זהות גנרית

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

כך נראית פונקציית הזהות כשהיא כתובה נכון, כפונקציה גנרית:

local function identity<T>(value: T): T
    return value
end

ה־<T> אחרי שם הפונקציה מצהיר על פרמטר טיפוס: מציין מקום שמייצג „טיפוס כלשהו, שנקבע בכל קריאה”. בתוך החתימה משתמשים ב־T בדיוק כמו בטיפוס אמיתי: הפרמטר הוא T, והפונקציה מחזירה T.

השימוש באותו T עבור הקלט והפלט הוא כל העניין. הוא מקשר ביניהם. כשקוראים ל־identity("hello"), הבודק קובע T = string עבור אותה קריאה, ולכן התוצאה היא string. כשקוראים ל־identity(42), אז T = number, ולכן התוצאה היא number. גוף אחד, כל הטיפוסים, ושום דבר לא אובד.

T הוא רק שם מוסכם (קיצור של "Type"): גם <Item> או <Value> מתאימים. וכמו תמיד ב־Luau, סוגריים הזוויתיים קיימים רק עבור הבודק: בזמן ריצה זו פונקציית Lua רגילה function identity(value) return value end.

challenge icon

אתגר

קל

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

  1. כתבו local function identity<T>(value: T): T שמחזירה את value.
  2. הכריזו על local luckyNumber: number = identity(7) ועל local greeting: string = identity("Hello, Luau!").
  3. הדפיסו את luckyNumber, ואז את greeting.

לחצו על הרצת קוד: הפלט מציג את 7 ואת Hello, Luau!.

נסו בעצמכם

-- 1) identity<T>(value: T): T
-- 2) luckyNumber ו־greeting מקריאות ל־identity
-- 3) להדפיס את שניהם

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

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