تواقيع الفهارس
جزء من قسم مقدمة إلى Luau في رحلة Lua على Coddy. الدرس 78 من 80.
تعرفت على أنواع الخرائط مثل {[string]: number} في فصل الجداول: توقيع الفهرس: يربط أي مفتاح نصي بقيمة عددية. وتكون مفيدة عندما لا تكون المفاتيح معروفة أثناء كتابة الشيفرة: العدادات، والإعدادات، وذاكرات التخزين المؤقت، والنتائج؛ أي شيء يُنشأ أثناء التشغيل.
type Counts = {[string]: number}
local counts: Counts = {}
counts["potion"] = 3 -- يُسمح بأي مفتاح من نوع string
counts["sword"] = 1
counts["potion"] += 1 -- يُتحقَّق من القيم بوصفها أعدادًاهناك حقيقتان وقت التشغيل مهمتان عند التعامل مع الخرائط. أولًا، تؤدي قراءة مفتاح لم يتم تعيينه قط إلى إرجاع nil: يعالج نمط العدّ الشائع ذلك باستخدام or، إذ يحوّل القيمة «المفقودة» إلى 0:
counts[item] = (counts[item] or 0) + 1ثانيًا، تتكرر pairs() على مفاتيح الخريطة من دون ترتيب مضمون: فقد يزور تشغيل البرنامج نفسه مرتين المفاتيح بترتيب مختلف. كلما كان يجب أن يكون الناتج متوقعًا، اجمع المفاتيح في مصفوفة، واستخدم table.sort لترتيبها، ثم كرر على المصفوفة المرتبة بدلًا من ذلك:
local keys: {string} = {}
for key in pairs(counts) do
table.insert(keys, key)
end
table.sort(keys)
for _, key in ipairs(keys) do
print(`{key}: {counts[key]}`)
endالتحدي
سهلاحتفظ بنتائج اللاعبين الذين لا تعرف أسماءهم مسبقًا.
- اكتب
type Scores = {[string]: number}وأنشئlocal scores: Scores = {}. - أضف النقاط:
scores["mia"] = (scores["mia"] or 0) + 5، ثم افعل الشيء نفسه مع"leo"باستخدام3. - اطبع
scores["mia"]وscores["leo"]وscores["zed"].
اضغط على تشغيل الكود: سيعرض الناتج 5 و3 وnil.
جرّب بنفسك
-- 1) عرّف type Scores = {[string]: number}، ثم local scores: Scores = {}
-- 2) أضف 5 نقاط إلى "mia" و3 نقاط إلى "leo"
-- 3) اطبع mia وleo وzed
جميع دروس مقدمة إلى Luau
1البدء مع Luau
ما هي Luau؟لماذا نستخدم Luau؟أول كود لك بلغة Luauفحص الأنواع وأنماط الأخطاءملخص: مقدمة إلى Luau4العمل مع الدوال
تحديد أنواع المعاملات والقيم المُعادةتحديد أنواع الدوال المجهولةالدوال التي لا تُعيد قيمةالمعاملات الاختياريةالقيم الافتراضية للمعاملاتالقيم الافتراضية للمنطقيةالدوال ذات المعاملات المتغيرةتعريف أنواع الدوالمراجعة: الدوال ذات الأنواع المحددة2الأنواع الأساسية
الأعداد والسلاسل النصية والقيم المنطقيةالنوع 'any': مخرج عند الضرورةالنوع 'unknown'الأنواع الخالية والاختياريةاستدلال الأنواع عمليًاالتصريحات الصريحة للأنواعمراجعة: تدريب على الأنواع الأساسية5الأسماء المستعارة، الأنواع المشتركة، والأنواع المتقاطعة
الأسماء المستعارة للأنواع الأوليةأنواع الاتحاد (Union Types)التعامل مع أنواع الاتحادالأنواع اللفظية (Literal Types)أنواع التقاطع (Intersection Types)دمج الأسماء المستعارة للأنواعملخص: تجميعات الأنواع المتقدمة3الجداول محددة الأنواع: المصفوفات والخرائط
المصفوفات محددة الأنواعإضافة العناصر وقراءتهاما نوع Map؟تعريف الخرائط والوصول إليهاالتكرار عبر الجداولالجداول ذات البُنى المختلطةقراءة شبكةإنشاء شبكةtable.unpackمراجعة: المصفوفات والخرائط6تحديد أشكال الجداول (Typing Table Shapes)
توضيحات أشكال الجداول المضمنةأسماء مستعارة للأنواع لأشكال الجداولالخصائص الاختياريةأشكال الجداول مقابل الجداول الحرةتوسيع أشكال الجداولإضافة الدوارل إلى أشكال الجداولSelf والدوال المسبوقة بنقطتين (Colon Methods)ملخص: تعريف أشكال الجداول9الأنواع المعممة (Generics): نظرة أولى
المشكلة التي تحلها الأنواع المعممةدالة هوية معممةاستخدام دالة معممةالمصفوفات المعممةأسماء مستعارة للأنواع المعممةملخص: الدوال المعممةتدرّب بنفسك: مترجم Luau عبر الإنترنت