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

المصفوفات المعممة

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

تصبح Generics مفيدة جدًا عند استخدام الجداول. أنت تكتب بالفعل مصفوفات typed على هيئة {number} أو {string}. داخل دالة generic، يمكن أن يكون نوع العنصر ببساطة T، و{T} تعني "array من أي شيء يتضح أن T يمثّله".

إليك المثال الكلاسيكي: جلب العنصر first من أي array:

local function first<T>(items: {T}): T?
    return items[1]
end

مرّر {string}، وسيستنتج الفاحص أن T = string، ولذلك تكون النتيجة من النوع string. مرّر {number}، وستكون number. تستبدل دالة واحدة مجموعة كاملة من النسخ الخاصة بكل نوع.

ألقِ نظرة دقيقة على نوع القيمة المُعادة: إنه T? وليس T. قد يكون array فارغًا، وعندها تكون items[1] هي nil: النوع الاختياري الذي تعرّفت إليه سابقًا يعبّر عن ذلك بصدق: "T أو nil". سيدفع الفاحص المستدعين إلى معالجة حالة nil قبل استخدام النتيجة، وهذا بالضبط اكتشاف الأخطاء الذي تريده من لغة ذات أنواع.

challenge icon

التحدي

سهل

أنشئ دالة عامة باسم first تقوم بما يلي:

  • تُصرّح بمعامل نوع T
  • تقبل معاملًا واحدًا باسم items من النوع {T}
  • تُرجع العنصر الأول، مع نوع إرجاع T? (يكون nil للمصفوفة الفارغة)

أنشئ هذه المصفوفات ذات الأنواع المحددة:

  • fruits من النوع {string} وتحتوي على "apple" و"banana" و"cherry"
  • scores من النوع {number} وتحتوي على 10 و20 و30 و40
  • flags من النوع {boolean} وتحتوي على false وtrue
  • empty من النوع {string} ولا تحتوي على أي عناصر

اطبع نتيجة استدعاء first مع كل مصفوفة، بهذا الترتيب، بحيث تكون كل نتيجة في سطر مستقل.

جرّب بنفسك

-- اكتب الكود هنا
-- 1) عرّف first<T>(items: {T}): T? التي تُرجع items[1]
-- 2) أنشئ fruits: {string}, scores: {number}, flags: {boolean}،
--    ومصفوفة {string} فارغة
-- 3) اطبع first(...) لكل مصفوفة، بهذا الترتيب
quiz iconاختبر نفسك

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

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

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