مفهوم Lambda Expressions في لغة البرمجة ++C

اقرأ في هذا المقال


مفهوم الـ Lambda Expressions t في لغة البرمجة ++C

في لغة البرمجة سي بلس بلس (++C) تم إضافة أسلوب برمجي جديد يمكن استخدامه لتقليل حجم الكود عند القيام بعملية تعريف دوال جديدة، ويسمى هذا الأسلوب  (Lambda Expressions) أو (Closures) أو (Literals Function) أو (Lambdas)، وعادةً ما يُستخدم هذا الأسلوب البرمجي للاستفادة من مفهوم التغليف، حيث يتم تغليف بضعة أسطر من التعليمات البرمجية التي يتم تمريرها إلى الخوارزميات أو الوظائف غير المتزامنة، وقد تم استخدامه بدءاً من الإصدار  (11 ++C).

وجاء الاسم تعبير لامدا (lambda expression) من علم (lambda calculus)، وهو شكل رياضي تم اختراعه في الثلاثينيات بواسطة (Alonzo Church) والتي جاءت للإجابة عن بعض الأسئلة المتعلقة بالمنطق، وقد شكّلت أيضاً ال (lambda expression) أساسيات  لغة البرمجة (LISP).

الشكل العام لتعريف Lambda Expression

الكود البرمجي التالي يبين الشكل العام لـ (Lambda Expression):

[captures](parameters)-> return Types Declaration { lambda Statements;};

مكان الكلمة (captures):

يتم وضع قيم للمتغيرات معرّفة خارج الدالة أو عناوينها فقط حتى يتم الوصول إليها و التعامل معها من داخل الدالة، ويجب أيضاً وضع مربعين فارغين ([]) في حال لم يتم وضع (parameters) فيها.

مكان الكلمة (parameters):

يتم وضع (parameters) للدالة مع الإشارة إلى أن المبرمج يستطيع عدم وضع القوسين (من الأساس في حال لم يرغب بوضع (parameters) فيها.

مكان الكلمة (return Types Declaration):

يتم تمرير نوع القيمة التي سيتم إرجاعها عندما تتم عملية التنفيذ، حيث يستطيع ال (Compiler) على الأغلب معرفة ما سترجعه الدالة بشكل تلقائي في حال كانت تحتوي على أمر واحد فقط، ولكن يفضّل دائماً أن تحدد نوع الإرجاع من قبل المبرمج.

مكان الكلمة  (lambda Statements):

يتم وضع الأوامر التي يرغب المبرمج أن يتم تنفيذها عند استدعاء الدالة.

أساسيات التعامل مع Lambda Expressions في لغة البرمجة ++C

الدالة العادية في لغة البرمجة (++C) يقوم المبرمج بإعطائها اسم عند تعريفها، ولاحقاً عندما تتم عملية تنفيذ الكود البرمجي، فإنه يتم استدعائها من خلال كتابة اسمها و هكذا سيفهم ال (Compiler) أنه يجب تنفيذها. وأما الدالة التي يتم تعريفها بأسلوب (Lambda Expressions) لا يتم اعطاؤها اسم، ولكن يتم إسنادها لمتغير من نفس النوع حتى نستدعيها من خلاله.

المصدر: Lambda expressions in C++Lambda expression in C++Lambdas In C++ With ExamplesWhat is a lambda expression in C++11?


شارك المقالة: