Menu
CoddyTech

תבנית ה-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, שמגן על טבלת קבועים מפני שינוי בזמן ריצה.

challenge icon

אתגר

קל

נסו את שתי תבניות ה-enum זו לצד זו.

  1. צרו את טבלת הקבועים local Speed = {Slow = 8, Fast = 24}.
  2. כתבו type Pace = "slow" | "fast" והכריזו על local pace: Pace = "fast".
  3. הדפיסו 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

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