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

التكرار باستخدام pairs()

جزء من قسم المنطق والتحكم في التدفق في رحلة Lua على Coddy. الدرس 1 من 54.

عند العمل مع الجداول بأسلوب القاموس في Lua، تحتاج غالبًا إلى الوصول إلى كل زوج من أزواج المفتاح والقيمة المخزّنة بداخلها. تتيح لك الدالة pairs() القيام بذلك من خلال السماح لك بالتكرار عبر جميع الإدخالات في جدول، بغضّ النظر عن نوع المفاتيح.تبدو صياغة استخدام pairs() في حلقة for كما يلي:
for key, value in pairs(myTable) do
    -- استخدم key و value هنا
end
خلال كل تكرار للحلقة، توفّر pairs() كلاً من key والقيمة المقابلة له. وهذا يعني أنه يمكنك الوصول إلى كلتا المعلومتين والعمل بهما في الوقت نفسه.إليك مثالًا عمليًا مع inventory الخاص بلاعب:
local inventory = {
    sword = 1,
    potion = 5,
    gold = 150
}

for item, quantity in pairs(inventory) do
    print(item .. ": " .. quantity)
end
سيطبع هذا الكود اسم كل item وquantity الخاصة به. تعمل الدالة pairs() مع أي نوع من المفاتيح، بما في ذلك السلاسل النصية والأرقام أو حتى الجداول الأخرى.التعامل مع السلاسل النصيةفي Lua، يمكنك وصل السلاسل النصية معًا باستخدام عامل الربط، وهو نقطتان (..). على سبيل المثال، ينتج عن "Hello" .. " " .. "World" القيمة "Hello World".إذا كنت بحاجة إلى تنسيق النص عبر عدة أسطر، يمكنك استخدام محرف الهروب للسطر الجديد، "\n". عندما تواجه Lua الرمز "\n" داخل سلسلة نصية، فإنها تتعامل معه باعتباره أمرًا للانتقال إلى السطر التالي.على سبيل المثال، ستُخرج print("Line 1\nLine 2") ما يلي:
Line 1
Line 2
challenge icon

التحدي

سهل

اكتب function printInventory تأخذ جدول inventory وتُرجع سلسلة نصية منسّقة تسرد جميع items وكمياتها.

استخدم pairs() للتكرار عبر جدول inventory وبناء سلسلة نصية بحيث يعرض كل سطر اسم item متبوعًا بكميته بالتنسيق item: quantity. يجب أن يكون كل item في سطر منفصل.

لوضع كل item في سطر خاص به، استخدم حرف السطر الجديد "\n" بين الإدخالات. على سبيل المثال، سيُعرض "apple: 5\nbanana: 3" كسطرين منفصلين. احرص على عدم إضافة "\n" بادئًا قبل first item: أضِفه فقط بين items.

المعلمات:

  • inventory (جدول): جدول بأسلوب القاموس تكون مفاتيحه أسماء items (من strings) وقيمه كميات (أرقام)

القيمة المُرجعة: سلسلة نصية تحتوي على كل item وكميته في سطر منفصل، مفصولين بواسطة "\n". مثال على output لـ {apple=5, banana=3}:
apple: 5
banana: 3

جرّب بنفسك

function printInventory(inventory)
    -- لتنسيق المخرجات، يمكنك ربط السلاسل النصية باستخدام عامل التشغيل '..'.
    -- لإضافة سطر جديد، استخدم الحرف الخاص '\n'.
    -- قد تحتاج إلى طريقة لتتبع ما إذا كنت تضيف العنصر الأول أو عنصراً لاحقاً
    -- لتقرر ما إذا كنت ستضيف سطراً جديداً قبل العنصر.
    
    -- اكتب الكود هنا
end
quiz iconاختبر نفسك

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

جميع دروس المنطق والتحكم في التدفق

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