Menu
Coddy logo textTech

שימוש בפונקציה גנרית

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

אתה אף פעם לא מציין ל־identity מהו T: הבודק מסיק זאת בעצמו. זוהי הסקת טיפוסים: בכל נקודת קריאה, Luau בוחנת את הארגומנט ומסיקה את T:

local word = identity("Luau")   -- הטיפוס של T הוסק כ-string
local count = identity(12)      -- הטיפוס של T הוסק כ-number
local flag = identity(false)    -- הטיפוס של T הוסק כ-boolean

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

הבדל חשוב אחד לעומת TypeScript: ב־TS אפשר לכפות את הטיפוס בנקודת הקריאה באמצעות identity<number>(5). ב־Luau אין ארגומנטים של טיפוס בנקודת הקריאה. השורה הזאת אינה תחביר מיוחד, ולכן Luau קוראת את הסוגריים הזוויתיים כאופרטורים של קטן מ־/גדול מ־, והקוד נכשל. כשאתה רוצה לציין את הטיפוס במפורש, הוסף הערת טיפוס למשתנה במקום זאת:

local count: number = identity(12)

אפשר לראות את ההסקה בפעולה בעזרת כלי מוכר: typeof מחזירה את שם הטיפוס של ערך בזמן ריצה, ולכן print(typeof(identity(12))) מדפיסה number: הערך עבר דרך הפונקציה הגנרית ללא כל שינוי.

challenge icon

אתגר

קל

הפונקציה הגנרית identity מהשיעור הקודם כבר נמצאת בעורך שלך. השתמשו בהסקת הטיפוסים שלה.

צרו שלושה משתנים, ותנו לבודק להסיק את T (אין צורך בהערות טיפוס):

  • word: קראו ל־identity עם "Luau"
  • count: קראו ל־identity עם 12
  • flag: קראו ל־identity עם false

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

  1. word
  2. התוצאה של typeof(word)
  3. count
  4. התוצאה של typeof(count)
  5. flag
  6. התוצאה של typeof(flag)

נסו בעצמכם

-- הפונקציה הגנרית identity מהשיעור הקודם
local function identity<T>(value: T): T
    return value
end

-- כתבו כאן קוד
-- 1) צרו את word, count ו־flag באמצעות קריאות ל־identity (תנו למערכת להסיק את T)
-- 2) הדפיסו כל ערך ואחריו את ה־typeof שלו
quiz iconבחנו את עצמכם

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

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

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