التكرار باستخدام pairs()
جزء من قسم المنطق والتحكم في التدفق في رحلة Lua على Coddy — الدرس 1 من 54.
pairs() تحقيق ذلك عن طريق السماح لك بالتكرار (loop) عبر جميع الإدخالات الموجودة في الجدول، بغض النظر عن نوع المفاتيح.يبدو بناء الجملة لاستخدام pairs() في حلقة for كالتالي:for key, value in pairs(myTable) do
-- استخدم key و value هنا
endpairs() كلاً من الـ key والـ value المقابل لها. هذا يعني أنه يمكنك Access والعمل مع كلا المعلومتين في نفس الوقت.إليك مثالاً عملياً مع قائمة أدوات الملاحظات (inventory) الخاصة باللاعب:local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endpairs() مع أي نوع مفتاح، بما في ذلك النصوص (strings) أو الأرقام أو حتى الجداول الأخرى.التعامل مع النصوص (Strings)في Lua، يمكنك دمج النصوص معًا باستخدام عامل الربط (concatenation operator)، وهو عبارة عن نقطتين (..). على سبيل المثال، "Hello" .. " " .. "World" ينتج عنه "Hello World".إذا كنت بحاجة إلى تنسيق النص عبر أسطر متعددة، يمكنك استخدام رمز الهروب للسطر الجديد، "\n". عندما يواجه Lua رمز "\n" داخل سلسلة نصية، فإنه يعامله كأمر للانتقال إلى السطر التالي.على سبيل المثال، print("Line 1\nLine 2") سينتج الإخراج التالي:Line 1
Line 2التحدي
سهلاكتب دالة printInventory تأخذ جدول inventory وترجع سلسلة نصية منسقة تعرِض جميع العناصر وكمياتها.
استخدم pairs() للتكرار عبر جدول inventory وبناء سلسلة نصية حيث يعرض كل سطر اسم العنصر متبوعاً بكميته بالشكل item: quantity. يجب أن يكون كل عنصر في سطر منفصل.
لوضع كل عنصر في سطر خاص به، استخدم رمز السطر الجديد "\n" بين المدخلات. على سبيل المثال، "apple: 5\nbanana: 3" ستظهر كسطرين منفصلين. كن حذراً بعدم إضافة "\n" في البداية قبل العنصر الأول — أضفها فقط بين العناصر.
المعاملات:
inventory(table): جدول بأسلوب القاموس (dictionary) تكون فيه المفاتيح أسماء العناصر (سلاسل نصية) والقيم هي الكميات (أعداد)
القيم المرجعة: سلسلة نصية يحتوي فيها كل عنصر وكميته على سطر منفصل، تفصل بينها "\n". مخرج مفترض لـ {apple=5, banana=3}:apple: 5banana: 3
جرّب بنفسك
function printInventory(inventory)
-- لتنسيق المخرجات، يمكنك دمج السلاسل النصية باستخدام العامل '..'.
-- لإضافة سطر جديد، استخدم الحرف الخاص '\n'.
-- قد تحتاج إلى طريقة لتتبع ما إذا كنت تضيف العنصر الأول أو عنصرًا لاحقًا
-- لتقرر ما إذا كنت ستضيف سطرًا جديدًا قبل العنصر.
-- اكتب الكود هنا
endيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتحكم في التدفق
1التكرار المتقدم عبر الجداول
التكرار باستخدام pairs()التكرار باستخدام ipairs()pairs() مقابل ipairs()مراجعة - ورقة الشخصية2المزيد من دوال مكتبة Table
table.concat()إنشاء الجداول و unpack()table.sort()فرز مخصص باستخدام الدوالمراجعة - لوحة أعلى النتائج