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

تحديد أنواع الدوال المجهولة

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

في لغة Lua، تعتبر الدوال قِيماً — لقد قمت بتخزينها في متغيرات وتمريرها: local f = function(x) return x * 2 end. هذه الدوال المجهولة (تعبيرات الدوال / anonymous functions) تأخذ ملاحظات الأنواع (type annotations) تماماً كما تفعل الدوال المسمّاة:

local double = function(x: number): number
    return x * 2
end

local shout = function(text: string): string
    return string.upper(text) .. "!"
end

تأخذ المعاملات الصيغة name: type داخل القوسين، ويتبع نوع الإرجاع القوس المغلق — الفارق الوحيد عن الدالة المسمّاة هو أن الكلمة المفتاحية function لا تحتوي على اسم ويتم إسناد التعبير بأكمله إلى متغير.

إذا كنت قد تعاملت مع JavaScript أو TypeScript، فلاحظ أن Luau لا تحتوي على دوال السهم (arrow functions) — لا توجد صياغة =>. كل تعبير دالة يُكتب باستخدام function ... end، سواء كان طويلاً أم قصيراً.

بمجرد إسنادها، يمكنك استدعاؤها عبر المتغير مثل أي دالة: double(21) ترجع 42، ويتحقق المحقق من كل استدعاء مقابل الملاحظات التي كتبتها.

challenge icon

التحدي

سهل

أعد كتابة هذه الدالة المسمّاة (named function) كـ دالة مجهولة (anonymous function) مخزنة في متغير محلي (local variable)، مع الحفاظ على جميع توضيحات الأنواع (type annotations):

function subtract(a: number, b: number): number
    return a - b
end

لذلك: أنشئ local subtract = function(...) ... end بنفس معلمات الدالة وأنواع الإرجاع (return types).

ثم أنشئ دالتين مجهولتين إضافيتين مع تحديد الأنواع:

  • createMessage — تأخذ text: string، وترجع النص "Message: [text]" (نوع الإرجاع string)
  • isPositive — تأخذ num: number، وترجع true إذا كان الرقم أكبر من 0، وإلا false (نوع الإرجاع boolean)

قم بالاستدعاء والطباعة، كل منها في سطر منفصل:

  1. subtract(10, 3)
  2. createMessage("Hello World")
  3. isPositive(-5)
  4. isPositive(8)

جرّب بنفسك

-- اكتب الكود هنا
-- local subtract = function(a: number, b: number): number ... end
-- local createMessage = function(text: string): string ... end
-- local isPositive = function(num: number): boolean ... end
-- ثم اطبع النتائج الأربع
quiz iconاختبر نفسك

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

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