Menu
CoddyTech

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

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

لقد كررت استخدام الحلقات على جداول Lua مرات كثيرة: تحافظ Luau على الحلقات نفسها تمامًا، وتضيف أنواعًا لمتغيرات الحلقة. بالنسبة إلى المصفوفات، تمرّ 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 في المنتصف إلى إنهاء الحلقة مبكرًا. نادرًا ما تكون هذه مشكلة مع المصفوفات المُعتنى بها جيدًا، لكن من المفيد معرفة ذلك.

بالنسبة إلى الخرائط، استخدم 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 على مفاتيح جزء التجزئة من دون ترتيب مضمون. قد يختلف الترتيب بين مرات التشغيل. عندما تحتاج إلى مخرجات حتمية (مثل التقارير المرتبة والاختبارات)، اجمع المفاتيح في مصفوفة، ثم استخدم table.sort لترتيبها، وبعد ذلك مرّ على المفاتيح المرتبة باستخدام ipairs وافهرس الخريطة.

challenge icon

التحدي

سهل

اطبع درجات الحرارة لأسبوع ومجموعها.

  1. صرّح عن local temps: {number} = {12, 15, 11, 14} وlocal total = 0.
  2. استخدم حلقة for day: number, temp: number in ipairs(temps) do، واطبع `Day {day}: {temp}` وأضف temp إلى total.
  3. بعد الحلقة، اطبع total.

اضغط على تشغيل الكود: يُظهر الناتج Day 1: 12 إلى Day 4: 14، ثم 52.

جرّب بنفسك

-- 1) صرّح عن temps: {number} وtotal = 0
-- 2) كرّر باستخدام day وtemp مع تحديد نوعيهما، واطبع كل يوم وأضفه إلى total
-- 3) اطبع المجموع

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

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