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

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

جزء من قسم مقدمة إلى 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

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