תבנית ה-Enum ב-Luau
חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 55 מתוך 80.
תוכניות מלאות בערכים שנבחרים מתוך קבוצה קטנה וקבועה: הזמנה נמצאת בסטטוס בהמתנה, נשלחה או נמסרה; שחקן פונה למעלה, למטה, שמאלה או ימינה. בשפות רבות יש מילת מפתח enum לשם כך. ב־Luau אין כזאת, והיא גם לא נחוצה, כי שני כלים שכבר יש לך מכסים את הצורך.
תבנית 1: טבלת קבועים. טבלה פשוטה ממפה שמות בעלי משמעות לערכים, ומחליפה "מספרי קסם" שמפוזרים בקוד:
local Status = {
Pending = 1,
Active = 2,
Done = 3,
}
print(Status.Active) -- 2זהו ערך אמיתי בזמן ריצה: אפשר לקרוא את Status.Active, להשוות אליו ולהעביר אותו הלאה, בדיוק כמו הטבלאות שבהן השתמשת עד עכשיו.
תבנית 2: איחוד ערכים מילוליים. טיפוס המורכב מערכי מחרוזת מדויקים, באמצעות הטיפוסים המילוליים שפגשת בפרק על איחודים:
type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow" -- ✗ שגיאת טיפוסהאיחוד קיים רק עבור הבודק, ללא עלות בזמן ריצה, אבל הוא מבטיח שמשתנה לא יוכל להכיל ערך מחוץ לקבוצה. שתי התבניות משלימות זו את זו: הטבלה מספקת לך ערכים בזמן ריצה תחת שם אחד; האיחוד מספק לך הבטחה בזמן הידור. בהמשך הפרק הזה תפגוש גם את table.freeze, שמגן על טבלת קבועים מפני שינוי בזמן ריצה.
אתגר
קלנסו את שתי תבניות ה-enum זו לצד זו.
- צרו את טבלת הקבועים
local Speed = {Slow = 8, Fast = 24}. - כתבו
type Pace = "slow" | "fast"והכריזו עלlocal pace: Pace = "fast". - הדפיסו
Speed.Fast, ואזpace.
לחצו על Run Code: הפלט מציג את 24 ואת fast.
נסו בעצמכם
-- 1) טבלה קבועה Speed עם Slow = 8, Fast = 24
-- 2) הטיפוס Pace = "slow" | "fast", ואז המשתנה המקומי pace: Pace = "fast"
-- 3) הדפס את Speed.Fast, ואז את pace
כל השיעורים ביחידה מבוא ל-Luau
1תחילת העבודה עם Luau
מהו Luau?למה להשתמש ב-Luau?קוד Luau הראשון שלכםבדיקת טיפוסים ומצבי שגיאהסיכום: מבוא ל-Luau4עבודה עם פונקציות
הגדרת טיפוסים לפרמטרים ולערכי החזרההגדרת טיפוסים לפונקציות אנונימיותפונקציות שאינן מחזירות ערךפרמטרים אופציונלייםערכי ברירת מחדל לפרמטריםערכי ברירת מחדל לבוליאניםפונקציות עם מספר משתנה של ארגומנטיםהגדרת טיפוסי פונקציותסיכום: פונקציות עם טיפוסים2טיפוסי ליבה
מספר, מחרוזת ובוליאניהטיפוס 'any': פתרון מילוטהטיפוס 'unknown'טיפוסי Nil ואופציונלייםהסקת טיפוסים בפעולההצהרות טיפוס מפורשותסיכום: תרגול בטיפוסי ליבה5כינויים, איחודים וחיתוכים
כינויים לסוגים פרימיטיבייםטיפוסי איחודעבודה עם טיפוסי איחודטיפוסים ליטרלייםטיפוסי חיתוךשילוב כינויים לסוגיםסיכום: שילובים מתקדמים של טיפוסים8Enums בדרך של Luau
תבנית ה-Enum ב-LuauEnums מספריים באמצעות טבלאותEnums של מחרוזות כאיחודיםשימוש ב-Enums של איחודי ערכים מילולייםהקפאת טבלאות קבועותסיכום: Enums בדרך של Luau3טבלאות מטיפוס מוגדר: מערכים ומפות
מערכים מטיפוס מוגדרהוספה וקריאה של איבריםמהו טיפוס Map?הגדרה וגישה למפותמעבר על טבלאותטבלאות במבנים מעורביםקריאת רשתבניית רשתtable.unpackסיכום: מערכים ומפותתרגלו בעצמכם: קומפיילר Luau אונליין