Menu
CoddyTech

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

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

إليك دالة الهوية بالشكل الصحيح، بوصفها دالة عامة:

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

إن <T> بعد اسم الدالة يعرّف مَعلمة نوع: عنصرًا نائبًا يشير إلى «نوعٍ ما، يُحدَّد عند كل استدعاء». داخل التوقيع، تستخدم T تمامًا كما تستخدم نوعًا حقيقيًا: المَعلمة من النوع T، والدالة تُرجع قيمة من النوع T.

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

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

challenge icon

التحدي

سهل

اكتب دالة واحدة تُعيد أي قيمة مع الحفاظ على نوعها.

  1. اكتب local function identity<T>(value: T): T التي تُعيد value.
  2. صرّح عن local luckyNumber: number = identity(7) وlocal greeting: string = identity("Hello, Luau!").
  3. اطبع luckyNumber، ثم greeting.

اضغط على Run Code: يُظهر الناتج 7 وHello, Luau!.

جرّب بنفسك

-- 1) identity<T>(value: T): T
-- 2) luckyNumber وgreeting من استدعاءات identity
-- 3) اطبع كليهما

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

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