المعاملات الاختيارية
جزء من قسم مقدمة إلى Luau في رحلة Lua على Coddy. الدرس 26 من 80.
في Lua العادية، كان بإمكانك دائمًا حذف الوسائط: إذ تتحول الوسائط المفقودة بصمت إلى nil، وكان نسيان التعامل مع ذلك مصدرًا شائعًا للأخطاء. تجعل Luau هذا الاحتمال صريحًا: أضف ? إلى نوع المعامل لتمييزه بأنه اختياري.
function greet(name: string, title: string?): string
if title then
return `{title} {name}`
end
return `Hello, {name}`
end
print(greet("Ada")) -- Hello, Ada
print(greet("Ada", "Dr.")) -- Dr. Adaتُقرأ string? على أنها «string أو nil». يمكن للجهات المستدعية تمرير سلسلة نصية أو تخطي الوسيطة تمامًا؛ أما المعاملات التي لا تحتوي على ? فهي مطلوبة، ويشير مدقّق الأنواع إلى الاستدعاءات التي تُغفلها.
قد تكون قيمة المعامل الاختياري داخل الدالة هي nil، لذا تحقّق منها قبل استخدامها: if title then ... end هو النمط المعتاد. إذا تخطيت التحقق ودمجت nil في سلسلة نصية، فستحصل على خطأ وقت التشغيل نفسه الذي كانت Lua تُظهره دائمًا؛ لكن مدقّق الأنواع يحذّرك أولًا.
التحدي
سهلاكتب دالة ملف شخصي يكون اسم العرض فيها اختياريًا.
- اكتب
local function createUserProfile(username: string, displayName: string?): string. - أعِد
`Profile: {displayName} (@{username})`عندما يكونdisplayNameمحددًا، وإلا فأعِد`Profile: @{username}`. - اطبع
createUserProfile("john_doe", "John Doe")وcreateUserProfile("jane_smith").
اضغط على Run Code: يُظهر الناتج Profile: John Doe (@john_doe) وProfile: @jane_smith.
جرّب بنفسك
-- 1) createUserProfile(username: string, displayName: string?): string
-- 2) اطبع الناتج مع اسم عرض وبدونه
جميع دروس مقدمة إلى 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 عبر الإنترنت