Menu
CoddyTech
flag Ar iconالعربيةdown icon

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

جزء من قسم المنطق والتحكم في التدفق في رحلة Lua على Coddy. الدرس 13 من 54.

بعد أن فهمت أنه يمكن تخزين الدوال في متغيرات وتمريرها، هناك طريقة أكثر اختصارًا لكتابتها. بدلًا من إعطاء الدالة اسمًا دائمًا، يمكنك إنشاؤها مباشرةً في المكان الذي تحتاج إليها فيه. تُسمّى هذه الدوال المجهولة.

الدالة المجهولة هي ببساطة دالة بلا اسم. تعرّفها باستخدام الكلمة المفتاحية function متبوعةً مباشرةً بمعاملاتها وجسمها:

function(a, b)
    return a + b
end

ينشئ هذا قيمة دالة يمكن استخدامها فورًا. تكون الدوال المجهولة مفيدة بشكل خاص عند تمرير الدوال كوسائط إلى دوال أخرى. هل تتذكر مثال الترتيب المخصص من قبل؟ هكذا يبدو باستخدام دالة مجهولة:

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 وتُرجع جدولًا جديدًا يحتوي على الأرقام الأكبر من الحدّ.

يتضمن المحرر بالفعل دالة مساعدة، filter(list, keep): تستدعي keep(value) لكل قيمة، وتُرجع جدولًا جديدًا بالقيم التي أعادت فيها keep القيمة true. استدعِ filter ومرّر شرط التحقق على هيئة دالة مجهولة مكتوبة مباشرةً داخل الاستدعاء، كما يمرّر الدرس دالةً إلى table.sort(). لا تخزّن شرط التحقق في متغير ولا تمنحه اسمًا.

المعاملات:

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

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

جرّب بنفسك

local function filter(list, keep)
    local result = {}
    for _, value in ipairs(list) do
        if keep(value) then
            table.insert(result, value)
        end
    end
    return result
end

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

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

جميع دروس المنطق والتحكم في التدفق

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