أنواع الاتحاد (Union Types)
جزء من قسم مقدمة إلى Luau في رحلة Lua على Coddy. الدرس 33 من 80.
أحيانًا لا يكفي نوع واحد. قد يصل معرّف المستخدم على شكل "user123" أو على شكل 42. في Lua العادية، لن يسعك إلا أن تأمل أن تسير الأمور على ما يرام؛ أما Luau فتمنحك الأنواع الاتحادية: يُقرأ الرمز | بمعنى «أو»:
local userId: number | string
userId = "user123" -- ✓ يُسمح بقيمة نصية
userId = 42 -- ✓ يُسمح بقيمة عددية
userId = true -- ✗ خطأ في النوع: boolean ليس ضمن اتحاد الأنواعيمكن للمتغير أن يحمل أيًّا من أعضاء الاتحاد، وهؤلاء فقط. وهذا هو الفرق الجوهري عن any: يظل الاتحاد صارمًا بشأن القيم المسموح بها، مع منحك المرونة التي تحتاج إليها.
تكون الاتحادات مفيدة على نحو خاص لمعاملات الدوال التي تقبل تنسيقات إدخال متعددة:
function printId(id: number | string): ()
print(id)
end
printId(42) -- يعمل مع عدد
printId("user123") -- يعمل مع سلسلة نصيةأنت تعرف بالفعل string?. كان ذلك أول اتحاد لك! وهو اختصار بسيط لـ string | nil. في الدرس التالي ستتعلم كيفية التعامل بأمان مع قيمة اتحادية بعد الحصول عليها.
التحدي
سهلاقبل قيمة تكون رقمًا أو سلسلة نصية.
- اكتب
local function printId(id: number | string): ()لطباعةid. - صرّح عن
local status: string | number = "active". - استدعِ
printId(7)وprintId("player7")، ثم عيّنstatus = 200واطبعه.
اضغط «تشغيل الكود»: يُظهر الناتج 7 وplayer7 و200.
جرّب بنفسك
-- 1) printId(id: number | string): ()
-- 2) local status: string | number = "active"
-- 3) استدعِ printId(7) وprintId("player7")، وعيّن status إلى 200، ثم اطبعه
جميع دروس مقدمة إلى 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 عبر الإنترنت