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

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

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

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

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

التحدي

سهل

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

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

لوضع كل عنصر في سطر خاص به، استخدم رمز السطر الجديد "\n" بين المدخلات. على سبيل المثال، "apple: 5\nbanana: 3" ستظهر كسطرين منفصلين. كن حذراً بعدم إضافة "\n" في البداية قبل العنصر الأول — أضفها فقط بين العناصر.

المعاملات:

  • inventory (table): جدول بأسلوب القاموس (dictionary) تكون فيه المفاتيح أسماء العناصر (سلاسل نصية) والقيم هي الكميات (أعداد)

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

جرّب بنفسك

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

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

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