Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التعدادات الرقمية باستخدام الجداول

جزء من قسم مقدمة إلى Luau في رحلة Lua على Coddy. الدرس 52 من 73.

لنبنِ نمط constant-table بطريقة صحيحة. اختر اسم table بصيغة PascalCase، وامنح كل member قيمة number صريحة، ومنذ ذلك الحين سيتحدث الكود باستخدام الأسماء:

local UserRole = {
    Admin = 1,
    Editor = 2,
    Viewer = 3,
}

على عكس enum في TypeScript، لا تتم ترقيم أي قيمة تلقائيًا. أنت تختار كل قيمة. البدء من 1 يتوافق جيدًا مع اصطلاحات Lua، لكن أي مخطط ينجح (فأكواد بأسلوب HTTP مثل 200 و404 مناسبة أيضًا).

تتألق members في المقارنات. يمكن لـ function تستقبل role أن تتفرع باستخدام الثوابت المسماة بدلًا من numbers مجردة:

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: نمط table وحده لا يقيّد الأرقام المسموح بها. هذا الضمان تحديدًا هو ما تضيفه اتحادات القيم الحرفية في الدرس التالي.

challenge icon

التحدي

سهل

أنشئ constant table named UserRole مع three members:

  • Admin = 1
  • Editor = 2
  • Viewer = 3

أنشئ function checkPermissions التي تستقبل role: number وتطبع:

  • Full access granted إذا كان الدور هو UserRole.Admin
  • Edit access granted إذا كان الدور هو UserRole.Editor
  • View access only خلاف ذلك

ثم، بالترتيب:

  1. print UserRole.Admin
  2. print UserRole.Editor
  3. print UserRole.Viewer
  4. call checkPermissions(UserRole.Admin)
  5. call checkPermissions(UserRole.Editor)
  6. call checkPermissions(UserRole.Viewer)

جرّب بنفسك

-- اكتب الكود هنا
-- 1) أنشئ جدول الثوابت UserRole (Admin=1, Editor=2, Viewer=3)
-- 2) اكتب checkPermissions(role: number) باستخدام if/elseif/else
-- 3) اطبع الأعضاء الثلاثة، ثم استدعِ الدالة لكل منها
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

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

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