الدرس 2 من 10

المرور على الجدول

هدف الدرس

الدالة ipairs للقائمة وpairs للقاموس

01

الشرح

تمرّ ipairs(t) على الجدول كأنه قائمة، فتأخذ الموضع 1 ثم 2 ثم 3 بالترتيب، وتتوقّف عند أول nil. أمّا pairs(t) فتمرّ على كل المفاتيح، أرقامًا كانت أو نصوصًا، وبها تصل إلى محتوى قاموس مثل { hp = 100, mana = 40 }.

ولا تستطيع أن تعدّ مفاتيح القاموس بـ #، لأنه يقيس الجزء المتسلسل الذي يبدأ من الموضع 1، وقاموس الإحصاءات ليس فيه الموضع 1، فيُرجع 0. فإن أردت أن تعدّ مفاتيحه فمرّ عليها بـ pairs وزِد عدّادًا في كل مرّة.

وانتبه إلى أن pairs لا تضمن أي ترتيب، فقد تأتي mana قبل hp، وقد يتغيّر الترتيب من تشغيل إلى آخر. فإن احتجت إلى ترتيب ثابت، كما في شاشة إحصاءات اللاعب، فاحفظ الترتيب في قائمة منفصلة ومرّ عليها بـ ipairs.

02

المطلوب

أصلح countKeys(t) لتعدّ مفاتيح أي جدول، واكتب الدالة hasItem(items, name) التي تُرجع true أو false بحسب وجود name في القائمة، والدالة orderedStats(stats, order) التي تُرجع قائمة نصوص مثل "hp: 100" للمفاتيح الموجودة في order وحدها، وبالترتيب نفسه.

الفحوص

6 فحوص
  1. الدالة countKeys تعدّ مفاتيح القاموس
  2. الدالة countKeys تعدّ عناصر القائمة والجدول الفارغ
  3. الدالة hasItem تجد الغرض الموجود
  4. الدالة hasItem تُرجع false للغرض غير الموجود
  5. الدالة orderedStats تتبع ترتيب order
  6. الدالة orderedStats لا تضيف ما ليس في order
main.lua
المخرجاتLua 5.4 (wasmoon)

نحمّل بيئة Lua الآن.

–/6

يبدأ الفحص حين تجهز البيئة.

تجد 6 فحوص في بطاقة «المطلوب».