Menu
CoddyTech

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

جزء من قسم المنطق وتسلسل التنفيذ في رحلة 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() مع أي نوع من المفاتيح، بما في ذلك السلاسل النصية والأرقام وحتى الجداول الأخرى.للتحدي: بناء سلسلة نصيةيتطلب منك التحدي أدناه إرجاع كل مُدخل كسلسلة واحدة، لذا إليك تذكيرًا بأداتين للتعامل مع السلاسل من الأساسيات. يمكنك ضم السلاسل باستخدام عامل الربط، وهو نقطتان (..). على سبيل المثال، ينتج عن "Hello" .. " " .. "World" القيمة "Hello World".إذا احتجت إلى تنسيق النص على عدة أسطر، يمكنك استخدام حرف الهروب للسطر الجديد "\n". عندما تواجه Lua الرمز "\n" داخل سلسلة نصية، فإنها تتعامل معه كأمر للانتقال إلى السطر التالي.على سبيل المثال، سينتج print("Line 1\nLine 2"):
Line 1
Line 2
challenge icon

التحدي

سهل

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

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

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

المعاملات:

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

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

جرّب بنفسك

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

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

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

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