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

التكرار على الجداول

جزء من قسم مقدمة إلى Luau في رحلة Lua على Coddy. الدرس 17 من 73.

لقد نفّذت حلقات على جداول Lua مرات عديدة: يحافظ Luau على الحلقات نفسها تمامًا ويضيف الأنواع إلى متغيرات الحلقة. بالنسبة إلى array، تمرّ ipairs على العناصر بالترتيب، من الفهرس 1 إلى #t، ويمكنك تحديد نوعَي المتغيرين:

local temps: {number} = {18, 21, 19}
for day: number, temp: number in ipairs(temps) do
    print(`Day {day}: {temp}`)
end

تذكّر أن ipairs تتوقف عند أول فهرس مفقود: إذ تؤدي فجوة nil في المنتصف إلى إنهاء الحلقة مبكرًا. نادرًا ما تكون هذه مشكلة مع array المُحافَظ عليها جيدًا، لكن من المفيد معرفتها.

بالنسبة إلى الخرائط، استخدم pairs، التي تزور كل زوج مفتاح/قيمة، بما في ذلك المفاتيح النصية. في خريطة من النوع {[string]: number}، تكون أنواع متغيرَي الحلقة طبيعيًا string وnumber:

local ages: {[string]: number} = {Alice = 30, Bob = 25}
for name: string, age: number in pairs(ages) do
    print(`{name} is {age}`)
end

تنبيه مهم: تزور pairs مفاتيح جزء التجزئة بترتيب لا يضمنه النظام. وقد يختلف ذلك بين عمليات التشغيل. عندما تحتاج إلى مخرجات حتمية (تقارير مرتبة، واختبارات)، اجمع المفاتيح في array، ونفّذ table.sort عليها، ثم نفّذ حلقة على المفاتيح المرتبة باستخدام ipairs وفهرس الخريطة.

challenge icon

التحدي

سهل

أنشئ مصفوفة مكتوبة النوع temps: {number} مهيّأة بالقيم 18 و21 و19 و24.

كرّر عليها باستخدام ipairs، مع تحديد نوع متغيّري الحلقة كليهما (day: number, temp: number). لكل عنصر، اطبع تمامًا:

Day 1: 18

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

بعد الحلقة، اطبع الإجمالي في سطر مستقل.

جرّب بنفسك

-- اكتب الكود هنا
-- 1) عرّف temps: {number} = {18, 21, 19, 24}
-- 2) for day: number, temp: number in ipairs(temps) do ... end
--    طباعة `Day {day}: {temp}` وجمعها في total
-- 3) اطبع المجموع بعد الحلقة
quiz iconاختبر نفسك

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

جميع دروس مقدمة إلى Luau

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