إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    C++ Lambda Expressions

    مفهوم الـ Lambda Expressions

    إبتداءاً من الإصدر c++11 تم إضافة أسلوب جديد يمكن استخدامه لتقليل حجم الكود عند تعريف دوال جديدة.
    الأسلوب الجديد الذي سنتعلمه في هذا الدرس لتعريف الدوال يقال له Lambda Expressions أو Closures أو Literals Function أو Lambdas فقط.


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

    [captures] (parameters) -> returnTypesDeclaration { lambdaStatements; };
    	

    مكان الكلمة captures يمكنك تمرير قيم متغيرات معرّفة خارج الدالة أو عناوينها فقط حتى تتمكن من الوصول إليها و التعامل معها من داخل الدالة مع الإشارة إلى أنه يجب وضع مربعين فارغين [] في حال لم ترد وضع بارامتيرات فيها.

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

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

    مكان الكلمة lambdaStatements نضع الأوامر التي نريدها أن تتنفذ عند استدعاء الدالة.

    أساسيات التعامل مع Lambda Expressions

    الدالة العادية نقوم بإعطائها إسم عند تعريفها و لاحقاً عندما نريد تنفيذها نقوم باستدعائها من خلال كتابة إسمها و هكذا سيفهم المترجم أننا نريد تنفيذها.

    الدالة التي يتم تعريفها بأسلوب Lambda Expressions لا نعطيها إسم و لكننا نقوم بإسنادها لمتغير من نفس نوعها حتى نستدعيها من خلاله أون نجعل نوع المتغير الذي سيشير لها auto حتى يتولى المترجم وضع النوع المناسب لهذا المتغير.


    في المثال التالي قمنا بتعريف دالة لا تملك أي باراميتر بأسلوب Lambda Expressions.
    عند تعريفها قمنا بإسنادها لمتغير إسمه lambda و نوعه auto حتى نتمكن لاحقاً من استدعائها من خلاله. في الأخير قمنا باستدعاء الدالة بواسطة المتغير lambda و لاحظ كيف أننا وضعنا قوسين بعد إسم المتغير كما نستدعي الدالة العادية بالضبط.

    مثال

    Main.cpp
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	// يساويها حتى نستطيع لاحقاً استدعاءها من خلاله lambda و من ثم قمنا بتعريف متغير إسمه Lambda Expression هنا قمنا بتعريف دالة بأسلوب
    	auto lambda = [] {
    		cout << "My first lambda expression";
    	};
    	
    	// و لاحظ أننا وضعنا قوسين بعده و كأننا نستدعي دالة عادية lambda هنا قمنا باستدعاء الدالة التي يشير لها المتغير
    	lambda();
    	
        return 0;
    }
    		

    سنحصل على النتيجة التالية عند التشغيل.

    My first lambda expression
    		

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

    auto lambda = [] {
    	cout << "My first lambda expression";
    };
    	

    الطريقة الأولى: كان بإمكانك إضافة أقواس الباراميترات و تركها فارغة كالتالي.

    auto lambda = []() {
    	cout << "My first lambda expression";
    };
    	

    الطريقة الثانية: كان بإمكانك وضع الكلمة void بين القوسين مما يعني أنه لا يوجد بارامتيرات أيضاً كالتالي.

    auto lambda = [](void) {
    	cout << "My first lambda expression";
    };
    	

    الطريقة الثالثة: كان بإمكانك تحديد أن الدالة لا ترجع قيمة بعد أن يتم تنفيذها, أي ذكر أن نوعها void و هنا لا بد من وضع أقواس الباراميترات قبلها كالتالي.

    auto lambda = []() void {
    	cout << "My first lambda expression";
    };
    	

    الطريقة الرابعة: كان بإمكانك وضع أقواس الباراميترات و بداخلها الكلمة void بالإضافة لذكر أن الدالة نوعها void أيضاً كالتالي.

    auto lambda = [](void) void {
    	cout << "My first lambda expression";
    };
    	

    أمثلة شاملة حول طرق تعريف Lambda Expressions


    المثال الأول

    في المثال التالي ستتعلم كيفية وضع بارميترات لدالة معرّفة بأسلوب Lambda Expressions بالإضافة إلى استدعائها.

    شاهد الأمثلة »



    المثال الثاني

    في المثال التالي ستتعلم كيفية تعريف دالة بأسلوب Lambda Expressions ترجع قيمة بالإضافة إلى استدعائها.

    شاهد الأمثلة »



    المثال الثالث

    في المثال التالي ستتعلم كيفية تعريف دالة بأسلوب Lambda Expressions مع تمرير متغيرات خارجية لها بالإضافة إلى استدعائها.

    شاهد الأمثلة »



    المثال الرابع

    في المثال التالي ستتعلم كيفية تعريف دالة بأسلوب Lambda Expressions مع تمرير عنواين متغيرات خارجية لها بالإضافة إلى استدعائها.

    شاهد الأمثلة »



    المثال الخامس

    المثال التالي مهم جداً لأنه يعتبر الهدف الأساسي من ابتكار أسلوب Lambda Expressions و هي عادةً ما تستخدم لهذا الهدف بالتحديد, حيث أنك ستتعلم منه كيفية تمرير الدالة كباراميتر لدالة أخرى لحظة تعريفها.

    شاهد الأمثلة »

    إعلان

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

    دورات
    مقالات أسئلة مشاريع كتب