التكرار على الجداول
جزء من قسم مقدمة إلى 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 والوصول إلى عناصر الخريطة بواسطة الفهرس.
التحدي
سهلأنشئ 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 بعد الحلقة
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس مقدمة إلى Luau
1البدء مع Luau
ما هي Luau؟لماذا نستخدم Luau؟أول كود لك بلغة Luauفحص الأنواع وأنماط الأخطاءملخص: مقدمة إلى Luau4العمل مع الدوال
تحديد أنواع المعاملات والقيم المرجعةتحديد أنواع الدوال المجهولةالدوال التي لا ترجع شيئاًالمعاملات الاختياريةالقيم الافتراضية للمعاملاتالدوال متغيرة المعاملاتتعريف أنواع الدوالملخص: الدوال محددة الأنواع7المشروع: مدير المهام مع أنواع البيانات
المشروع: هيكل المهامدالة لإضافة تفاصيل مهمة2الأنواع الأساسية
الأنواع الأساسية: num و str و boolالنوع 'any': مخرج الطوارئالنوع 'unknown'أنواع Nil والأنواع الاختياريةاستنتاج الأنواع في التطبيق العمليتوضيحات الأنواع الصريحةملخص: تدريبات على الأنواع الأساسية5الأسماء المستعارة، الأنواع المشتركة، والأنواع المتقاطعة
الأسماء المستعارة للأنواع الأوليةأنواع الاتحاد (Union Types)التعامل مع أنواع الاتحادالأنواع اللفظية (Literal Types)أنواع التقاطع (Intersection Types)دمج الأسماء المستعارة للأنواعملخص: تجميعات الأنواع المتقدمة3الجداول المحددة الأنواع: المصفوفات والخرائط
المصفوفات المحددة الأنواعإضافة العناصر وقراءتهاما هو نوع الخريطة (Map)؟التصريح عن الخرائط والوصول إليهاالتكرار على الجداولالجداول متعدده الأشكالالمصفوفات المحددة الأنواع متعددة الأبعادtable.unpack والوسائط المتغيرة (Varargs)ملخص: المصفوفات والخرائط6تحديد أشكال الجداول (Typing Table Shapes)
توضيحات أشكال الجداول المضمنةأسماء مستعارة للأنواع لأشكال الجداولالخصائص الاختياريةأشكال الجداول مقابل الجداول الحرةتوسيع أشكال الجداولإضافة الدوارل إلى أشكال الجداولSelf والدوال المسبوقة بنقطتين (Colon Methods)ملخص: تعريف أشكال الجداول9الأنواع المعممة (Generics): نظرة أولى
المشكلة التي تحلها الأنواع المعممةدالة هوية معممةاستخدام دالة معممةالمصفوفات المعممةأسماء مستعارة للأنواع المعممةملخص: الدوال المعممة