Menu
Coddy logo textTech

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

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

בוא נבנה כראוי את תבנית טבלת הקבועים. בחר שם לטבלה ב-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

אתגר

קל

צרו טבלה קבועה בשם UserRole עם שלושה איברים:

  • Admin = 1
  • Editor = 2
  • Viewer = 3

צרו פונקציה checkPermissions שמקבלת role: number ומדפיסה:

  • Full access granted אם התפקיד הוא UserRole.Admin
  • Edit access granted אם התפקיד הוא UserRole.Editor
  • View access only אחרת

לאחר מכן, לפי הסדר:

  1. הדפיסו את UserRole.Admin
  2. הדפיסו את UserRole.Editor
  3. הדפיסו את UserRole.Viewer
  4. קראו ל־checkPermissions(UserRole.Admin)
  5. קראו ל־checkPermissions(UserRole.Editor)
  6. קראו ל־checkPermissions(UserRole.Viewer)

נסו בעצמכם

-- כתבו כאן קוד
-- 1) צרו את טבלת הקבועים UserRole (Admin=1, Editor=2, Viewer=3)
-- 2) כתבו את checkPermissions(role: number) באמצעות if/elseif/else
-- 3) הדפיסו את שלושת האיברים, ואז קראו לפונקציה עבור כל אחד מהם
quiz iconבחנו את עצמכם

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

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

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