Menu
CoddyTech

دالة هوية معممة

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

إليك identity function بالشكل الصحيح، على هيئة generic function:

local function identity<T>(value: T): T
    return value
end

إن <T> بعد اسم function يعلن عن type parameter: وهو عنصر نائب يمثّل "some type، يتم تحديده عند كل call". داخل التوقيع، تستخدم T تمامًا مثل type حقيقي: فالمعامل هو T، وfunction تُرجع T.

استخدام نفس T للإدخال والإخراج هو جوهر الفكرة. فهو يربط بينهما. عند استدعاء identity("hello")، يحدد المدقّق T = string لذلك call، ومن ثم تكون النتيجة من النوع string. وعند استدعاء identity(42)، يكون T = number، ومن ثم تكون النتيجة من النوع number. جسم واحد، وevery type، ولا شيء يضيع.

إن T مجرد اسم اصطلاحي (اختصارًا لـ "Type"): وتعمل <Item> أو <Value> بالطريقة نفسها. وكما هو الحال دائمًا في Luau، فإن الأقواس الزاوية موجودة للمدقّق فقط: وفي وقت التشغيل، تكون هذه هي Lua function العادية function identity(value) return value end.

challenge icon

التحدي

سهل

أنشئ دالة generic باسم identity التي:

  • تُعلن معلمة نوع T
  • تقبل معلمة واحدة باسم value من النوع T
  • تُرجع تلك القيمة، مع نوع إرجاع T

ثم أنشئ هذه المتغيرات المعيّنة باستخدام دالتك:

  • luckyNumber من النوع number: استدعِ identity باستخدام 7
  • greeting من النوع string: استدعِ identity باستخدام "Hello, Luau!"
  • isReady من النوع boolean: استدعِ identity باستخدام true

اطبع ما يلي، كل عنصر في سطر منفصل:

  1. luckyNumber
  2. greeting
  3. isReady
  4. نتيجة استدعاء identity باستخدام "<code>generics" مباشرةً داخل print
  5. نتيجة استدعاء identity باستخدام 99 مباشرةً داخل print

جرّب بنفسك

-- اكتب الكود هنا
-- 1) عرّف identity<T>(value: T): T
-- 2) أنشئ luckyNumber و greeting و isReady باستدعاءات identity
-- 3) اطبعها، ثم اطبع identity(النص الدقيق من التعليمات) و identity(99)
quiz iconاختبر نفسك

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

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

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