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

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

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

تصبح المعممات (Generics) مفيدة للغاية بمجرد إشراك الجداول. أنت تكتب بالفعل مصفوفات محددة النوع مثل {number} أو {string} — وداخل الدالة المعممة، يمكن أن يكون نوع العنصر بباصلة T، ويدل {T} على "مصفوفة من أي نوع يتبين أن T يمثله".

إليك المثال الكلاسيكي — جلب العنصر الأول من أي مصفوفة:

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

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

انظر عن كثب إلى نوع الإرجاع: إنه T? وليس T. يمكن أن تكون المصفوفة فارغة، وحينها يكون 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