إعلان
دورة تطوير التطبيقات باستخدام لغة 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 عادةً ما يستخدم عند استخدام دالة تحتوي على باراميتر عبارة عن دالة أخرى.
    في درس الحاويات الديناميكية ( STL ) و بالتحديد حين شرحنا كيفية التعامل مع الكلاس forward_list قمنا باستخدام دالة إسمها remove_if() و قلنا أن هذه الدالة يجب أن نمرر لها دالة أخرى عند استدعائها حتى نحدد كيف سيتم حذف العناصر من الكائن.

    ملاحظة: يجب أن تراجع ذلك الدرس جيداً مع قراءة جميع الأمثلة الموضوعة فيه حتى تفهم ما سيتم شرحه الآن.


    في ذاك الدرس و بالتحديد في المثال الخامس, قمنا بتعريف الدالة shouldBeRemoved() و من ثم تمريرها للدالة remove_if() كالتالي.

    // shouldBeRemoved() هكذا قمنا بتعريف الدالة
    bool shouldBeRemoved(const int& value)
    {
        if (value > 3)
        {
            return true;
        }
        
        return false;
    }
    
    ..
    ..
    
    // remove_if() و هكذا قمنا بتمريرها للدالة
    myList.remove_if(shouldBeRemoved);
    	


    إذاً ما فعلناه وقتها هو أننا قمنا بتعريف دالة عادية إسمها shouldBeRemoved() و مررناها للدالة Lambda Expressions و لكننا الآن سنقوم بإعادة نفس الكود السابقة و تعريف نفس الدالة السابقة بأسلوب Lambda Expressions مع تمريرها بشكل مباشر للدالة remove_if() كالتالي.

    myList.remove_if( [](const int& value) {
        if (value > 3)
        {
            return true;
        }
    
        return false;
    });
    	


    الآن إذا كنا سنعيد نفس المثال الخامس مع التركيز فقط على تمرير Lambda Expressions للدالة remove_if() فسيكون الكود كالتالي.

    مثال

    Main.cpp
    #include <iostream>
    #include <forward_list>
    
    using namespace std;
    
    int main()
    {
        // بالإضافة إلى أننا قمنا بإضافة عدة قيم فيه int يمكنه أن يحتوي على عناصر نوعها forward_هنا قمنا بتعريف كائن من الكلاس
        forward_list<int> my= {1, 3, 2, 4, 2, 5, 1, 5};
    
    	// remove_if() لحذف جميع العناصر التي تستوفي الشرط الذي مررناه بين أقواس الدالة myمن الكائن remove_if() هنا قمنا باستدعاء الدالة
    	// Lambda Expression لاحظ أننا قمنا بتمرير نفس الدالة التي قمنا بتمريرها في المثال في السابق و لكن بأسلوب remove_if() بين أقواس الدالة 
        myList.remove_if( [](const int& value) {
            // لإعلام المترجم أنه يجب حذف العنصر من الكائن الذي قام باستدعائها true هنا قلنا أن أي عنصر تكون قيمته أكبر من 3 سترجع الدالة
            if (value > 3)
            {
                return true;
            }
    
            // لإعلام المترجم أنه يجب عدم حذف العنصر من الكائن الذي قام باستدعائها false في حال لم تكن قيمة العنصر أكبر من 3 سيتم إرجاع القيمة
            return false;
        });
    
        cout << "values = ";
    
        // إبتداءاً من أول عنصر وصولاً لآخر عنصر فيه myهنا قمنا بإنشاء حلقة تقوم في كل دورة بطباعة قيمة عنصر جديد من العناصر الموجودة في الكائن
        for (auto it = myList.begin(); it != myList.end(); ++it)
        {
            cout << *it << " ";
        }
    
        return 0;
    }
    		

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

    values = 1 3 2 2 1
    		
    إعلان

    Eqla3Tech.com

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

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

    الدورات

    أدوات مساعدة

    الأقسام

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