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

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

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

أحيانًا لا يكفي type واحد. قد يصل معرّف المستخدم بالشكل "user123" أو بالشكل 42. في Lua العادية، كنت ستأمل أن تسير الأمور على ما يرام؛ أما Luau فتمنحك union types: وتُقرأ العلامة | بمعنى "أو":

local userId: number | string

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

يمكن للـ variable أن يحتوي على أي member من union، وعلى تلك الأعضاء فقط. وهذا هو الفرق الجوهري عن any: يظل union صارمًا بشأن ما هو allowed، مع منحك المرونة التي تحتاج إليها.

تكون unions مفيدة بشكل خاص لمعلمات function التي تقبل تنسيقات إدخال متعددة:

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

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

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

challenge icon

التحدي

سهل

أنشئ function باسم 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 عبر الإنترنت