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

التحدي

سهل

جرّب نمطي التعداد جنبًا إلى جنب.

  1. أنشئ جدول الثوابت local Speed = {Slow = 8, Fast = 24}.
  2. اكتب type Pace = "slow" | "fast" وصرّح عن local pace: Pace = "fast".
  3. اطبع Speed.Fast، ثم pace.

اضغط على تشغيل الكود: يُظهر الناتج 24 وfast.

جرّب بنفسك

-- 1) جدول ثابت Speed يحتوي على Slow = 8 وFast = 24
-- 2) النوع Pace = "slow" | "fast"، ثم المتغير المحلي pace: Pace = "fast"
-- 3) اطبع Speed.Fast، ثم pace

جميع دروس مقدمة إلى Luau

تدرّب بنفسك: مترجم Luau عبر الإنترنت