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

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

جزء من قسم Logic & Flow في رحلة Lua على Coddy — الدرس 1 من 54.

عند العمل مع الجداول بنمط القاموس في Lua، غالباً ما تحتاج إلى الوصول إلى كل زوج (مفتاح-قيمة) مخزن بالداخل. تجعل الدالة pairs() هذا ممكناً من خلال السماح لك بالتكرار عبر جميع المدخلات في الجدول، بغض النظر عن نوع المفاتيح.

تبدو صيغة استخدام pairs() في حلقة for التكرارية كما يلي:

for key, value in pairs(myTable) do
    -- استخدم key و value هنا
end

خلال كل تكرار للحلقة، توفر pairs() كلاً من المفتاح والقيمة المقابلة له. هذا يعني أنه يمكنك الوصول إلى كلا المعلومتين والعمل معهما في نفس الوقت.

إليك مثال عملي مع قائمة جرد اللاعب:

local inventory = {
    sword = 1,
    potion = 5,
    gold = 150
}

for item, quantity in pairs(inventory) do
    print(item .. ": " .. quantity)
end

سيقوم هذا الكود بطباعة اسم كل عنصر وكميته. تعمل الدالة pairs() مع أي نوع من المفاتيح، بما في ذلك السلاسل النصية، أو الأرقام، أو حتى الجداول الأخرى.

challenge icon

التحدي

سهل

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

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

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

المعاملات:

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

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

ورقة مرجعية

تسمح لك الدالة pairs() بالتكرار عبر جميع أزواج المفتاح والقيمة في جدول بنمط القاموس:

for key, value in pairs(myTable) do
    -- استخدم المفتاح والقيمة هنا
end

خلال كل تكرار، توفر pairs() كلاً من المفتاح والقيمة المقابلة له، مما يسمح لك بالوصول إلى كلا المعلومتين في آن واحد.

مثال مع جدول مخزون:

local inventory = {
    sword = 1,
    potion = 5,
    gold = 150
}

for item, quantity in pairs(inventory) do
    print(item .. ": " .. quantity)
end

تعمل الدالة pairs() مع أي نوع من أنواع المفاتيح، بما في ذلك النصوص، أو الأرقام، أو حتى الجداول الأخرى.

جرّب بنفسك

function printInventory(inventory)
    -- اكتب الكود هنا
end
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow