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

استخدام دالة معممة

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

أنت لا تخبر identity مطلقًا بما هو T — يقوم فاحص الأنواع باستنتاجه بنفسه. هذا ما يُعرف بـ استنتاج النوع (type inference): عند كل موضع استدعاء، ينظر Luau إلى الوسيط ويحل قيمة T:

local word = identity("Luau")   -- T مستنتج كـ string
local count = identity(12)      -- T مستنتج كـ number
local flag = identity(false)    -- T مستنتج كـ boolean

كل استدعاء يكون مستقلاً — يمكن لـ T أن يكون string في سطر ما وأن يكون number في السطر التالي. النتيجة المستنتجة آمنة تمامًا تمامًا كما لو كانت ملاحظة نوع مكتوبة يدويًا: المتغير word هو string بالنسبة للفاحص، مع ميزات الإكمال التلقائي وفحص الأخطاء بالكامل.

هناك فرق مهم واحد عن TypeScript: تتيح لك TS فرض النوع عند موضع الاستدعاء باستخدام identity<number>(5). لكن Luau لا يحتوي على وسائط أنواع عند موضع الاستدعاء (call-site type arguments) — هذا السطر ليس بناء جملة خاصًا، لذا يقرأ Luau الأقواس الزاوية كعمليات مقارنة أصغر من/أكبر من ويحدث خطأ في الكود (fails). عندما تريد تحديد النوع بشكل صريح، قم بإضافة ملاحظة النوع للمتغير بدلاً من ذلك:

local count: number = identity(12)

يمكنك مراقبة عملية الاستنتاج أثناء عملها باستخدام أداة مألوفة: يُرجع typeof اسم نوع القيمة في زمن التشغيل (runtime)، لذا فإن print(typeof(identity(12))) يطبع number — حيث مرت القيمة عبر الدالة العامة دون أي تغيير على الإطلاق.

challenge icon

التحدي

سهل

دالة identity الـ generic من الـ lesson الـ previous موجودة بالفعل في محرر النصوص لديك. ضع الاستنتاج الخاص بها قيد التشغيل.

قم بإنشاء three متغيرات، مع ترك أداة الفحص تستنتج T (لا يلزم إضافات توضيحية):

  • word — استدعِ identity مع "Luau"
  • count — استدعِ identity مع 12
  • flag — استدعِ identity مع false

قم بطباعة ما يلي، كل منها في سطر مستقل:

  1. word
  2. نتيجة typeof(word)
  3. count
  4. نتيجة typeof(count)
  5. flag
  6. نتيجة typeof(flag)

جرّب بنفسك

-- دالة identity العامة من الدرس السابق
local function identity<T>(value: T): T
    return value
end

-- اكتب الكود هنا
-- 1) أنشئ word و count و flag باستدعاءات identity (دع T يُستنتج)
-- 2) اطبع كل قيمة متبوعة بـ typeof الخاصة بها
quiz iconاختبر نفسك

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

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