الـ Local Functions في لغة السي شارب 7

04 نوفمبر 2017     158 مشاهدة    0 تعليق
تم النشر في #Local Functions  #C# 

الـ Local Functions أو الدوال المحليه ما هي إلا عبارة عن دوال يمكن تعريفها بداخل محتوى دوال أخرى. وهذه إحدى المزايا الجديدة في لغة السي شارب 7, لنلقي نظرة على المثال التالي:

public double SeriesSum(int n)
{
    double sum = 0;
    // 1/4 + 2/9 + 3/16 + 4/25 ...
    for (int i = 1; i <= n; i++)
    {
        sum += LocalFunction(i);
    }

    return sum;

    double LocalFunction(double a)
    {
        var b = Math.Pow(a + 1, 2);
        return a / b;
    }
}

لو القينا نظره بتمعن في المثال السابق والذي يقوم بمجموع متسلسلة معينة من الأعداد, فقد تم إستخدام الدوال المحليه, لتسهيل وتبسيط المثال دون الحاجه إلى إنشاء جديده, لأنه بالطبيعي لن يستفيد منها غير دالة حساب المتسلسلة.

طبعاً يمكنك إستخدام الدوال المحلية بصورة الـ Lambda Expression إذا كان النتيجة التي يتم إحتسابها يمكن أن تكتب في سطر واحد, فيمكن كتابة الدالة المحليه السابقة على النحو التالي:

double LocalFunction(double a) => a / Math.Pow(a + 1, 2);

هنالك فوائد كثير للدوال المحليه منها:

- فهي مثل الـ Lambda Expression يمكن للدالة المحلية أن تحتفظ بالدالة ومتغيراتها في متغير محلي

- دعمها للـ Recursion مثل أي دالة أخرى

- لا تحتاج إلى أي Delegate ليقوم بالتأشير على الدالة وهذا الأمر يقلل من الضغط على الذاكرة ويساعد المترجم بكتابة الدالة In-Line

تويتر فيسبوك قوقل + لينكد إن


اكتب تعليقك