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

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

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

لقد قمت بالتكرار (loop) على جداول Lua عدة مرات من قبل — تحافظ Luau على نفس التكرارات تمامًا وتضيف أنواعًا (types) إلى متغَيّرات التكرار. بالنسبة لـ arrays، يتنقل 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 في المنتصف ينهي التكرار مبكرًا. نادراً ما تكون هذه مشكلة مع المصفوفات المنظمة جيدًا، ولكن من المفيد معرفتها.

بالنسبة لـ maps، استخدم pairs، الذي يزور كل زوج من المفاتيح والقيم — بما في ذلك المفاتيح من نوع string. في القاموس {[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 مفاتيح جزء التجزئة (hash-part) في ترتيب غير مضمون — يمكن أن يختلف بين مرات التشغيل. عندما تحتاج إلى مخرجات محددة ودقيقة (تقارير مرتبة، اختبارات)، قم بتجميع المفاتيح في array، واستخدم table.sort عليها، ثم قم بالتكرار عبر المفاتيح المرتبة باستخدام ipairs والوصول إلى عناصر الخريطة بواسطة الفهرس.

challenge icon

التحدي

سهل

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

قم بعمل loop عليه باستخدام ipairs، مع تحديد نوع كِلا المغيرين variables للـ loop (day: number, temp: number). لكل عنصر، اطبع بالظبط:

Day 1: 18

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

بعد after الـ loop، اطبع total في سطر منفرد.

جرّب بنفسك

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

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

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