Menu
CoddyTech

المعاملات الاختيارية

جزء من قسم مقدمة إلى 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 تُظهره دائمًا؛ لكن مدقّق الأنواع يحذّرك أولًا.

challenge icon

التحدي

سهل

اكتب دالة ملف شخصي يكون اسم العرض فيها اختياريًا.

  1. اكتب local function createUserProfile(username: string, displayName: string?): string.
  2. أعِد `Profile: {displayName} (@{username})` عندما يكون displayName محددًا، وإلا فأعِد `Profile: @{username}`.
  3. اطبع 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

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