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

التصريح عن الخرائط والوصول إليها

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

يبدو إعلان الـ map المحددة النوع مثل متعهدي الجداول (table constructors) الذين طالما كتبتهم — يقوم التوصيف (annotation) فقط بتحديد أنواعه للـ key والـ value:

local stock: {[string]: number} = {apples = 12, bananas = 5}

تستخدم القراءة والكتابة الفهرسة التي تعرفها. بالنسبة للمفاتيح التي تُعد معرّفات صالحة، يصل stock.apples و stock["apples"] إلى نفس الـ entry؛ كما أن الصيغة باستخدام أقواس المربع تتعامل أيضًا مع المفاتيح التي تحتوي على مسافات أو تلك المخزنة في متغيرات:

stock["cherries"] = 20   -- أضف إدخالاً جديداً
stock.bananas = 8        -- حدّث واحداً موجوداً
print(stock["apples"])  -- 12
print(stock["plums"])   -- nil — لم يُعيَّن قط

يراقب فاحص الأنواع (type checker) كل عملية كتابة: يميّز stock["apples"] = "many" بخطأ لأن "many" ليس number، واستخدام number كـ key يميّز بخطأ لأن المفاتيح يجب أن تكون من نوع string.

لـ حذف entry، قم بتعيين nil للـ key الخاص به — حيث يزيله stock["bananas"] = nil entirely، وتُعطي القراءات اللاحقة nil. لا توجد دالة حذف منفصلة؛ هذا هو أسلوب Lua القياسي، وهو لا يزال يفحص النوع في الـ map.

challenge icon

التحدي

سهل

أنشئ map محدداً بالنوع stock: {[string]: number} وتم تعيين قيم أولية له هي apples = 12 و bananas = 5. ثم قم بما يلي:

  1. أضف entry جديداً باسم cherries بقيمة 20
  2. قم بعمل update لـ bananas إلى 8

أخيراً، قم بطباعة كل مما يلي في سطر منفصل:

  1. كمية الـ apples في الـ stock
  2. كمية الـ bananas في الـ stock
  3. كمية الـ cherries في الـ stock
  4. كمية الـ plums في الـ stock — وهو key لم تقم بضبطه أبداً

جرّب بنفسك

-- اكتب الكود هنا
-- 1) أعلن stock: {[string]: number} مع apples = 12, bananas = 5
-- 2) أضف cherries = 20، وحدّث bananas إلى 8
-- 3) اطبع apples, bananas, cherries، ثم plums
quiz iconاختبر نفسك

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

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