التكرار باستخدام 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() مع أي نوع من المفاتيح، بما في ذلك السلاسل النصية، أو الأرقام، أو حتى الجداول الأخرى.
التحدي
سهلاكتب دالة printInventory تأخذ جدول inventory وتعيد سلسلة نصية منسقة تسرد جميع العناصر وكمياتها.
استخدم pairs() للتكرار عبر جدول المخزون وبناء سلسلة نصية حيث يظهر كل سطر اسم العنصر متبوعاً بكميته بالتنسيق item: quantity. يجب أن يكون كل عنصر في سطر منفصل.
لوضع كل عنصر في سطر خاص به، استخدم حرف السطر الجديد "\n" بين المدخلات. على سبيل المثال، "apple: 5\nbanana: 3" ستظهر كسطرين منفصلين. احرص على عدم إضافة "\n" بادئة قبل العنصر الأول — أضفها فقط بين العناصر.
المعاملات:
inventory(جدول): جدول بنمط القاموس حيث المفاتيح هي أسماء العناصر (سلاسل نصية) والقيم هي الكميات (أرقام)
المخرجات: سلسلة نصية مع كل عنصر وكمية في سطر منفصل، مفصولة بـ "\n". مثال للمخرجات لـ {apple=5, banana=3}:apple: 5banana: 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
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1التكرار المتقدم عبر الجداول
التكرار باستخدام pairs()التكرار باستخدام ipairs()pairs() مقابل ipairs()مراجعة - ورقة الشخصية2المزيد من دوال مكتبة Table
table.concat()إنشاء الجداول و unpack()table.sort()فرز مخصص باستخدام الدوالمراجعة - لوحة أعلى النتائج