Menu
CoddyTech

Enums מספריים באמצעות טבלאות

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

כך נראה דפוס טבלת הקבועים במלואו. בחרו שם לטבלה ב־PascalCase, תנו לכל איבר מספר מפורש, ומאותו רגע הקוד משתמש בשמות:

local UserRole = {
    Admin = 1,
    Editor = 2,
    Viewer = 3,
}

בניגוד ל־enum של TypeScript, המספרים אינם מוקצים אוטומטית. אתם בוחרים כל ערך. התחלה מ־1 מתאימה היטב למוסכמות של Lua, אבל כל שיטה עובדת (גם קודים בסגנון HTTP כמו 200 ו־404 מתאימים).

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

local function checkPermissions(role: number)
    if role == UserRole.Admin then
        print("Full access granted")
    elseif role == UserRole.Editor then
        print("Edit access granted")
    else
        print("View access only")
    end
end

שימו לב שהפרמטר מוגדר מטיפוס number: דפוס הטבלה לבדו אינו מגביל את המספרים שאפשר להשתמש בהם. ההבטחה הזאת היא בדיוק מה שאיחודי ליטרלים מוסיפים בשיעור הבא.

challenge icon

אתגר

קל

ציין שלוש רמות קושי באמצעות טבלת קבועים.

  1. צור local Level = {Easy = 1, Normal = 2, Hard = 3}.
  2. כתוב local function describeLevel(level: number): string שמחזירה "Relaxed" עבור Level.Easy, את "Standard" עבור Level.Normal, ובכל מקרה אחר את "Brutal".
  3. הדפס את Level.Hard, ואז את describeLevel(Level.Normal).

לחץ על הרצת קוד: הפלט מציג את 3 ואת Standard.

נסו בעצמכם

-- 1) טבלת הקבועים Level (Easy = 1, Normal = 2, Hard = 3)
-- 2) describeLevel(level: number): מחרוזת באמצעות if/elseif/else
-- 3) הדפיסו את Level.Hard, ואז את describeLevel(Level.Normal)

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

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