Menu
Coddy logo textTech

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

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

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

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

אתגר

קל

צרו פונקציה גנרית בשם identity ש:

  • מכריזה על פרמטר טיפוס T
  • מקבלת פרמטר אחד בשם value מטיפוס T
  • מחזירה את הערך הזה, עם טיפוס החזרה T

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

  • luckyNumber מטיפוס number: קראו ל־identity עם 7
  • greeting מטיפוס string: קראו ל־identity עם "Hello, Luau!"
  • isReady מטיפוס boolean: קראו ל־identity עם true

הדפיסו את הפריטים הבאים, כל אחד בשורה נפרדת:

  1. luckyNumber
  2. greeting
  3. isReady
  4. התוצאה של קריאה ל־identity עם "<code>generics" ישירות בתוך print
  5. התוצאה של קריאה ל־identity עם 99 ישירות בתוך print

נסו בעצמכם

-- כתבו כאן קוד
-- 1) הגדירו identity<T>(value: T): T
-- 2) צרו את luckyNumber, greeting ו-isReady באמצעות קריאות ל-identity
-- 3) הדפיסו אותם, ואז הדפיסו את identity(הטקסט המדויק מההוראות) ואת identity(99)
quiz iconבחנו את עצמכם

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

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

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