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

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

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

أنت لا تخبر identity أبدًا بماهية T؛ إذ يستنتجه المدقق بنفسه. هذا هو استنتاج النوع: عند كل موضع استدعاء، ينظر Luau إلى الوسيط ويحل قيمة T:

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

Each استدعاء مستقل: يمكن أن يكون T من النوع string في سطر، ومن النوع number في السطر التالي. والنتيجة المستنتجة آمنة تمامًا مثل التعليق التوضيحي المكتوب يدويًا: word هو من النوع string بالنسبة إلى المدقق، مع الإكمال التلقائي الكامل والتحقق من الأخطاء.

هناك اختلاف مهم واحد عن TypeScript: يتيح لك TS فرض النوع في موضع الاستدعاء باستخدام identity<number>(5). لا يملك Luau وسيطات أنواع في موضع الاستدعاء. ذلك السطر ليس صياغة خاصة، لذلك يقرأ Luau الأقواس الزاوية على أنها مقارنات أصغر من/أكبر من، ويفشل code. عندما تريد تحديد النوع صراحةً، علّق المتغير بدلًا من ذلك:

local count: number = identity(12)

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

challenge icon

التحدي

سهل

دالة identity العامة من الدرس previous موجودة بالفعل في محررك. استخدم استنتاجها.

أنشئ ثلاثة متغيرات، ودَع أداة التحقق تستنتج 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

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