C++طريقة تمرير دالة معرّفة بأسلوب Lambda Expressions لدالة أخرى
تعريف الدوال بأسلوب Lambda Expressions عادةً ما يستخدم عند استخدام دالة تحتوي على باراميتر عبارة عن دالة أخرى.
في درس الحاويات الديناميكية ( STL ) و بالتحديد حين شرحنا كيفية التعامل مع الكلاس forward_list
قمنا باستخدام دالة إسمها remove_if() و قلنا أن هذه الدالة يجب أن نمرر لها دالة أخرى عند استدعائها حتى نحدد كيف سيتم حذف العناصر من الكائن.
يجب أن تراجع شرح الكلاس forward_list جيداً مع قراءة جميع الأمثلة الموضوعة فيه حتى تفهم ما سيتم شرحه الآن.
في ذاك الدرس و بالتحديد في المثال الخامس, قمنا بتعريف الدالة shouldBeRemoved() و من ثم تمريرها للدالة remove_if() كالتالي.
إذاً ما فعلناه وقتها هو أننا قمنا بتعريف دالة عادية إسمها shouldBeRemoved() و مررناها للدالة Lambda Expressions و لكننا الآن سنقوم بإعادة نفس الكود السابقة و تعريف نفس الدالة السابقة بأسلوب Lambda Expressions مع تمريرها بشكل مباشر للدالة remove_if() كالتالي.
الآن إذا كنا سنعيد نفس المثال الخامس مع التركيز فقط على تمرير Lambda Expressions للدالة remove_if() فسيكون الكود كالتالي.
مثال
سنحصل على النتيجة التالية عند التشغيل.
values = 1 3 2 2 1