نمط 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، الذي يحمي جدول الثوابت من التعديل أثناء وقت التشغيل.
التحدي
سهلجرّب نمطي التعداد جنبًا إلى جنب.
- أنشئ جدول الثوابت
local Speed = {Slow = 8, Fast = 24}. - اكتب
type Pace = "slow" | "fast"وصرّح عنlocal pace: Pace = "fast". - اطبع
Speed.Fast، ثمpace.
اضغط على تشغيل الكود: يُظهر الناتج 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'الأنواع الخالية والاختياريةاستدلال الأنواع عمليًاالتصريحات الصريحة للأنواعمراجعة: تدريب على الأنواع الأساسية5الأسماء المستعارة، الأنواع المشتركة، والأنواع المتقاطعة
الأسماء المستعارة للأنواع الأوليةأنواع الاتحاد (Union Types)التعامل مع أنواع الاتحادالأنواع اللفظية (Literal Types)أنواع التقاطع (Intersection Types)دمج الأسماء المستعارة للأنواعملخص: تجميعات الأنواع المتقدمة8التعدادات (Enums) بطريقة Luau
نمط Enum في Luauالتعدادات الرقمية باستخدام الجداولتعدادات النصوص كاتحادات (Unions)استخدام تعدادات الاتحاد الحرفيةتجميد الجداول الثابتةملخص: التعدادات (Enums) بطريقة Luau3الجداول محددة الأنواع: المصفوفات والخرائط
المصفوفات محددة الأنواعإضافة العناصر وقراءتهاما نوع Map؟تعريف الخرائط والوصول إليهاالتكرار عبر الجداولالجداول ذات البُنى المختلطةقراءة شبكةإنشاء شبكةtable.unpackمراجعة: المصفوفات والخرائط6تحديد أشكال الجداول (Typing Table Shapes)
توضيحات أشكال الجداول المضمنةأسماء مستعارة للأنواع لأشكال الجداولالخصائص الاختياريةأشكال الجداول مقابل الجداول الحرةتوسيع أشكال الجداولإضافة الدوارل إلى أشكال الجداولSelf والدوال المسبوقة بنقطتين (Colon Methods)ملخص: تعريف أشكال الجداول9الأنواع المعممة (Generics): نظرة أولى
المشكلة التي تحلها الأنواع المعممةدالة هوية معممةاستخدام دالة معممةالمصفوفات المعممةأسماء مستعارة للأنواع المعممةملخص: الدوال المعممةتدرّب بنفسك: مترجم Luau عبر الإنترنت