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

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

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

دعنا نبني نمط الجدول الثابت (constant-table pattern) بشكل صحيح. اختر اسم جدول بأسلوب PascalCase، وامنح كل عضو برقم صريح، ومن تلك اللحظة فصاعدًا يتحدث الكود بالأسماء:

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

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

تتألق الأعضاء في المقارنات. يمكن لدالة تتلقى دورًا (role) أن تتفرع بناءً على الثوابت المnamed بدلاً من الأرقام الخالية:

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 — نمط الجدول وحده لا يقيد الأرقام المسموح بها. هذا الضمان هو بالضبط ما تضيفه اتحادات القيم الحرفية (literal unions) في الدرس القادم.

challenge icon

التحدي

سهل

أنشئ table ثابتاً باسم UserRole يحتوي على three من الـ members:

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

أنشئ function باسم checkPermissions تأخذ role: number وتطبع:

  • Full access granted إذا كانت الـ role هي UserRole.Admin
  • Edit access granted إذا كانت الـ role هي UserRole.Editor
  • View access only بخلاف ذلك

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

  1. اطبع UserRole.Admin
  2. اطبع UserRole.Editor
  3. اطبع 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