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: תבנית הטבלה לבדה לא מגבילה אילו מספרים מותרים. הערובה הזו היא בדיוק מה שמוסיפים האיחודים של ערכים מילוליים בשיעור הבא.
אתגר
קלצרו טבלה קבועה בשם UserRole עם שלושה איברים:
Admin=1Editor=2Viewer=3
צרו פונקציה checkPermissions שמקבלת role: number ומדפיסה:
Full access grantedאם התפקיד הואUserRole.AdminEdit access grantedאם התפקיד הואUserRole.EditorView access onlyאחרת
לאחר מכן, לפי הסדר:
- הדפיסו את
UserRole.Admin - הדפיסו את
UserRole.Editor - הדפיסו את
UserRole.Viewer - קראו ל־
checkPermissions(UserRole.Admin) - קראו ל־
checkPermissions(UserRole.Editor) - קראו ל־
checkPermissions(UserRole.Viewer)
נסו בעצמכם
-- כתבו כאן קוד
-- 1) צרו את טבלת הקבועים UserRole (Admin=1, Editor=2, Viewer=3)
-- 2) כתבו את checkPermissions(role: number) באמצעות if/elseif/else
-- 3) הדפיסו את שלושת האיברים, ואז קראו לפונקציה עבור כל אחד מהם
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מבוא ל-Luau
1תחילת העבודה עם Luau
מהו Luau?למה להשתמש ב-Luau?קוד Luau הראשון שלכםבדיקת טיפוסים ומצבי שגיאהסיכום: מבוא ל-Luau4עבודה עם פונקציות
הגדרת טיפוסים לפרמטרים ולערכי החזרההגדרת טיפוסים לפונקציות אנונימיותפונקציות שאינן מחזירות ערךפרמטרים אופציונלייםערכי ברירת מחדל לפרמטריםפונקציות עם מספר משתנה של ארגומנטיםהגדרת טיפוסי פונקציותסיכום: פונקציות עם טיפוסים2טיפוסי ליבה
טיפוסים בסיסיים: num, str, boolהטיפוס 'any': פתרון מילוטהטיפוס 'unknown'טיפוסי Nil ואופציונלייםהסקת טיפוסים בפעולההצהרות טיפוסים מפורשותסיכום: תרגול טיפוסי ליבה5כינויים, איחודים וחיתוכים
כינויים לסוגים פרימיטיבייםטיפוסי איחודעבודה עם טיפוסי איחודטיפוסים ליטרלייםטיפוסי חיתוךשילוב כינויים לסוגיםסיכום: שילובים מתקדמים של טיפוסים8Enums בדרך של Luau
תבנית ה-Enum ב-LuauEnums מספריים באמצעות טבלאותEnums של מחרוזות כאיחודיםשימוש ב-Enums של איחודי ערכים מילולייםהקפאת טבלאות קבועותסיכום: Enums בדרך של Luau3טבלאות מטיפוס מוגדר: מערכים ומפות
מערכים מטיפוס מוגדרהוספת איברים וקריאתםמהו טיפוס Map?הצהרה על מפות וגישה אליהןמעבר על טבלאותטבלאות בעלות מבנים מעורביםמערכים רב־ממדיים מטיפוס מוגדרtable.unpack ו־Varargsסיכום: מערכים ומפותתרגלו בעצמכם: קומפיילר Luau אונליין