ما هي الـ Pure Function؟

من أهم مفاهيم Functional Programming هو مفهوم الدوال النقية (Pure Functions).

الدالة النقية هي دالة تقوم بشيئين فقط:

  1. تستقبل مدخلات (Inputs).
  2. تعالجها وتُرجع نتيجة (Output).

ولا تقوم بأي تعديل على أي بيانات خارجها، ولا تعتمد على أي حالة خارجية.

بمعنى آخر، إذا أعطيتها نفس المدخلات، فستُرجع دائمًا النتيجة نفسها.

مثال على Pure Function

function add(a, b) {
return a + b;
}

هذه دالة نقية لأنها:

  • تستقبل قيمتين.
  • تجمعهما.
  • تُرجع الناتج.
  • لا تعدل أي متغير خارجها.

إذا استدعيناها بهذه الطريقة:

add(5, 10);

فستُرجع دائمًا:

15

بغض النظر عن مكان أو عدد مرات استدعائها.

ما هي return؟

الكلمة المفتاحية return تُستخدم لإرجاع قيمة من الدالة إلى المكان الذي استدعاها.

return a + b;

عند تنفيذ return تتوقف الدالة مباشرة، وتُرجع القيمة الناتجة.

ولهذا السبب، لا تُنفذ أي أوامر تُكتب بعدها داخل الدالة.

مثال على دالة غير نقية

لننظر إلى المثال التالي:

let sum = 0;
function add(a, b) {
sum = a + b;
return a + b;
}

هذه ليست Pure Function.

والسبب أنها عدلت متغيرًا موجودًا خارج الدالة.

sum = a + b;

هذا يُسمى Side Effect، لأن الدالة لم تكتفِ بإرجاع نتيجة، بل غيّرت حالة خارجية أيضًا.

في البرمجة الوظيفية نحاول تجنب هذه التأثيرات قدر الإمكان، لأن الدوال تصبح أسهل في الاختبار، وإعادة الاستخدام، وفهم سلوكها.

ماذا يجب أن تتذكر؟

  • Pure Function تستقبل مدخلات وتُرجع مخرجات فقط.
  • لا تعتمد على متغيرات خارجية ولا تُعدلها.
  • مع نفس المدخلات، تُرجع دائمًا النتيجة نفسها.
  • return تُستخدم لإرجاع قيمة من الدالة، وتنهي تنفيذها.
  • تعديل أي متغير خارج الدالة يجعلها ليست Pure Function.