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

المشكلة التي تحلها الأنواع المعممة

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

تخيل أنك بحاجة إلى دالة ترجع ببساطة أي قيمة تمررها إليها — دالة مطابقة (identity). مع الأنواع التي تعرفها حتى الآن، لديك خياران، وكلاهما سيء.

الخيار الأول: كتابة نسخة منفصلة لكل نوع. أجساد الدوال متطابقة؛ التوصيفات البرمجية فقط هي المختلفة:

local function echoNumber(value: number): number
    return value
end

local function echoString(value: string): string
    return value
end

كل نوع جديد يعني نسخة أخرى، وأي خطأ يتم إصلاحه في واحدة يجب إصلاحه في جميع النسخ الأخرى. هذا هو بالتحديد التكرار الذي تكتب الدوال لتجنبه.

الخيار الثاني: دمجها في دالة واحدة معتمدة على النوع any:

local function echo(value: any): any
    return value
end

الآن دالة واحدة تتعامل مع كل شيء — ولكنك دفعت الثمن من أمان الأنواع (type safety). عندما تستدعي echo("hello")، لم يعد الـ checker يعرف أن الـ result هي string. إنه يعرف فقط any، لذا يتوقف الإكمال التلقائي وتتسرب أخطاء الأنواع: الارتباط بين ما تم إدخاله وما خرج قد ضاع.

ما تريده حقًا هو دالة تعمل مع كل نوع وتتذكر النوع الذي استخدمه كل استدعاء. هذا بالضبط ما تقدمه لك الأنواع المعممة (generics) — وهي موضوع هذا الفصل.

جرّب بنفسك

لا يتضمّن هذا الدرس تحدّيًا برمجيًا.

quiz iconاختبر نفسك

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

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