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

الدوال المجهولة

جزء من قسم Logic & Flow في رحلة Lua على Coddy — الدرس 13 من 54.

الآن بعد أن فهمت أنه يمكن تخزين الدوال في متغيرات وتمريرها، هناك طريقة أكثر إيجازاً لكتابتها. بدلاً من إعطاء الدالة اسماً دائماً، يمكنك إنشاؤها مباشرة حيث تحتاج إليها - وتسمى هذه بالدوال المجهولة (anonymous functions).

الدالة المجهولة (anonymous function) هي ببساطة دالة بدون اسم. يمكنك تعريفها باستخدام الكلمة المفتاحية function متبوعة مباشرة بمعاملاتها وجسم الدالة:

function(a, b)
    return a + b
end

يؤدي هذا إلى إنشاء قيمة دالة يمكن استخدامها على الفور. تعد الدوال المجهولة (Anonymous functions) مفيدة بشكل خاص عند تمرير الدوال كوسيطات (arguments) إلى دوال أخرى. هل تتذكر مثال الفرز المخصص من وقت سابق؟ إليك كيف يبدو الأمر باستخدام دالة مجهولة:

local players = {
    {name = "Alice", score = 150},
    {name = "Bob", score = 200},
    {name = "Charlie", score = 175}
}

table.sort(players, function(a, b)
    return a.score > b.score
end)

بدلاً من تعريف دالة منفصلة ومسماة للمقارنة، يتم إنشاء الدالة مباشرة كمعامل ثانٍ لـ table.sort(). هذا يجعل الكود أكثر إيجازاً ويحافظ على منطق الفرز في مكان استخدامه.

challenge icon

التحدي

سهل

اكتب دالة filterByThreshold تأخذ numbers و threshold وتعيد جدولاً جديداً يحتوي فقط على الأرقام الأكبر من العتبة (threshold).

استخدم table.insert() مع نهج الدالة المجهولة (anonymous function) لتصفية الأرقام. قم بإنشاء منطق التصفية بشكل مضمن (inline) دون تعريف دالة منفصلة مسماة.

المنطق:

  • إنشاء جدول نتائج فارغ
  • التكرار عبر جدول الأرقام
  • لكل رقم، استخدم دالة مجهولة للتحقق مما إذا كان يتجاوز العتبة
  • إذا أرجع التحقق قيمة true، أضف الرقم إلى جدول النتائج
  • إرجاع جدول النتائج المصفى

المعاملات:

  • numbers (table): جدول بنمط قائمة يحتوي على قيم عددية
  • threshold (number): القيمة الدنيا (غير شاملة) للتصفية

المخرجات: جدول يحتوي فقط على الأرقام الأكبر من العتبة (table)

ورقة مرجعية

الـ دالة المجهولة (anonymous function) هي دالة بدون اسم، تُعرّف باستخدام الكلمة المفتاحية function متبوعة بالمعاملات والجسم:

function(a, b)
    return a + b
end

تُعد الدوال المجهولة مفيدة عند تمرير الدوال كوسطاء (arguments)، مما يبقي المنطق في نفس السطر الذي يُستخدم فيه:

local players = {
    {name = "Alice", score = 150},
    {name = "Bob", score = 200},
    {name = "Charlie", score = 175}
}

table.sort(players, function(a, b)
    return a.score > b.score
end)

يؤدي هذا إلى إنشاء دالة المقارنة مباشرة كـ argument لـ table.sort()، مما يجعل الكود أكثر إيجازاً.

جرّب بنفسك

function filterByThreshold(numbers, threshold)
    -- اكتب الكود هنا
end
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow