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

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

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

إليك دالة identity بشكل صحيح — كـ generic function:

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

الرمز <T> بعد اسم الـ function يعلن عن type parameter — وهو عنصر نائب يمثل "نوعًا ما، يتحدد عند كل call". داخل التوقيع (signature) تستخدم T تمامًا مثل type حقيقي: الـ parameter هو T، والـ function ترجع T.

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

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

challenge icon

التحدي

سهل

أنشئ دالة عامة (generic) باسم identity تقوم بما يلي:

  • تعلن عن معامل نوع (type parameter) باسم 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 عبر الإنترنت