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

الدوال كقيم من الدرجة الأولى

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

في Lua، الدوال أكثر من مجرد كتل من التعليمات البرمجية التي تنفّذ مهامًا. فهي قيم يمكن التعامل معها مثل أي نوع بيانات آخر. وهذا يعني أنه يمكنك العمل مع الدوال بالطريقة نفسها التي تعمل بها مع الأرقام أو السلاسل النصية أو الجداول.

يمكنك تخزين دالة في متغير:

local greet = function()
    print("Hello!")
end

greet()  -- المخرجات: Hello!

هنا، تُسنَد الدالة إلى المتغير greet، ويمكنك استدعاؤها تمامًا مثل أي دالة عادية. وهذا يتيح إمكانيات قوية لكيفية تنظيم التعليمات البرمجية.

يمكن أيضًا تمرير الدوال كوسائط إلى دوال أخرى. ويكون هذا مفيدًا بشكل خاص عندما تريد أن تستخدم إحدى الدوال السلوك المُعرَّف في دالة أخرى:

function executeAction(action)
    action()
end

local sayHello = function()
    print("Hello from a function!")
end

executeAction(sayHello)  -- المخرجات: Hello from a function!

في هذا المثال، تستقبل executeAction دالةً كمعامل لها وتستدعيها. يتم تمرير الدالة sayHello تمامًا كما تمرر عددًا أو سلسلة نصية.

يمكن للدوال أن تُرجع دوالً أخرى أيضًا. يتيح لك هذا إنشاء دوال ديناميكيًا استنادًا إلى شروط أو معلمات معينة:

function createMultiplier(factor)
    return function(number)
        return number * factor
    end
end

local double = createMultiplier(2)
print(double(5))  -- الناتج: 10
challenge icon

التحدي

سهل

اكتب function باسم applyOperation تأخذ a وb وoperation وتُرجع نتيجة تطبيق function العملية على العددين.

المعامل operation هو جدول يحتوي على function سيتم استدعاؤها باستخدام a وb كوسيطين.

المنطق:

  • استخرج function من جدول operation باستخدام المفتاح "func"
  • استدعِ تلك function باستخدام a وb كوسيطين
  • أرجِع النتيجة

المعاملات:

  • a (number): العدد الأول
  • b (number): العدد الثاني
  • operation (table): جدول يحتوي على function مخزنة في المفتاح "func"

القيمة المُرجعة: نتيجة استدعاء function العملية باستخدام a وb (number)

جرّب بنفسك

function applyOperation(a, b, operation)
    -- اكتب الكود هنا
end
quiz iconاختبر نفسك

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

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

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