Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

أنواع الاتحاد (Union Types)

جزء من قسم مقدمة إلى Luau في رحلة Lua على Coddy. الدرس 31 من 73.

في بعض الأحيان، لا يكون نوع واحد كافيًا. قد يصل مُعرّف المستخدم كـ "user123" أو كـ 42. في لغة Lua العادية، قد تتأمل خيرًا فحسب؛ ولكن Luau تمنحك أنواع Union — والرمز | يُقرأ كـ "أو":

local userId: number | string

userId = "user123"  -- ✓ يُسمح بـ string
userId = 42          -- ✓ يُسمح بـ number
userId = true        -- ✗ خطأ نوع: boolean ليس في الـ union

يمكن لـ variable أن تحمل أيًا من members الـ union — وتلك فقط. هذا هو الفارق الجوهري عن any: تظل الـ union صارمة بشأن ما هو مسموح به مع منحك المرونة التي تحتاجها.

تُعد أنواع الـ union مفيدة بشكل خاص لـ parameter الخاص بـ function والتي تقبل أشكالاً متعددة من المدخلات:

function printId(id: number | string): ()
    print(id)
end

printId(42)          -- يعمل مع عدد
printId("user123")   -- يعمل مع سلسلة

أنت تعرف بالفعل string? — لقد كانت أول union بالنسبة لك! إنها مجرد اختصار لـ string | nil. في الدرس القادم، ستتعلم كيفية التعامل بآمان مع قيمة union بمجرد الحصول عليها.

challenge icon

التحدي

سهل

أنشئ دالة باسم printId تأخذ id: number | string وتقوم بطباعتها — بنوع إرجاع صريح ().

أعلن عن متغير status من النوع string | number، بتهيئة أولية "<code>active".

ثم، بالترتيب:

  1. استدعِ printId(42)
  2. استدعِ printId("<code>user123")
  3. اطبع status
  4. أعد تعيين status إلى 200 واطبعها مرة أخرى

أربعة أسطر من المخرجات في المجموع.

جرّب بنفسك

-- اكتب الكود هنا
-- printId(id: number | string): ()
-- local status: string | number = النص الدقيق من التعليمات
-- استدعِ printId(42)، printId(النص الدقيق من التعليمات)،
-- اطبع status، أعد التعيين إلى 200، اطبع مرة أخرى
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس مقدمة إلى Luau

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