0Pricing
Dart Academy · درس

تركيب مسارات الدوال النقية

سلسلة التحويلات بطريقة يمكن توقّعها

تركيب مسارات الدوال النقية درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.

ما الدالة النقية؟

تعيد الدالة النقية الناتج نفسه للمدخل نفسه، ولا تغيّر شيئًا خارجها. إنها قابلة للتنبؤ وسهلة الاختبار. ✨

int double(int x) => x * 2; // pure

اكتشاف الآثار الجانبية

تتفاعل الدالة ذات الآثار الجانبية مع العالم الخارجي، مثل الطباعة أو تغيير متغير عام. ويصعب فهم هذه الدوال أكثر.

var log = [];
void impure(int x) => log.add(x); // side effect

لماذا تفيد النقاوة خطوط المعالجة؟

تتسلسل الدوال النقية بأمان لأن كل خطوة تعتمد على مدخلها فقط. ويمكنك تركيبها دون مفاجآت.

تسلسل map وwhere

خط المعالجة هو مجرد سلسلة من التحويلات. صفِّ باستخدام where، ثم أعد التشكيل باستخدام map، واقرأ الخط من الأعلى إلى الأسفل.

var r = [1, 2, 3, 4]
  .where((n) => n.isEven)
  .map((n) => n * 10);

كل خطوة كسولة

يعيد كل من where وmap iterables كسولة، لذا لا تُنفذ السلسلة بأكملها إلا عند استهلاكها. أضف toList لتحويل النتائج إلى قائمة فعلية.

print(r.toList()); // [20, 40]

الإنهاء باستخدام fold

اختم خط المعالجة بالتجميع. هنا يجمع fold القيم المصفاة والمحوّلة في عدد واحد.

var sum = [1, 2, 3, 4]
  .where((n) => n.isEven)
  .fold(0, (a, b) => a + b);

تركيب دالتين

يمكنك إنشاء دالة جديدة بتمرير ناتج دالة إلى أخرى. ويُقرأ هذا التركيب هكذا: نفّذ f ثم g.

int Function(int) compose(
    int Function(int) f, int Function(int) g) =>
  (x) => g(f(x));

استخدام الدالة المركبة

ركّب خطوات نقية صغيرة في دالة واحدة قابلة لإعادة الاستخدام. وتتصرف النتيجة كمحوّل متخصص في مهمة واحدة ومنظم.

var f = compose((x) => x + 1, (x) => x * 2);
print(f(3)); // 8

أبقِ الخطوات صغيرة

تجعل الدوال النقية الصغيرة والمُسمّاة خطوط المعالجة موضحةً لذاتها. تنفذ كل خطوة مهمة واحدة، فتُقرأ السلسلة كأنها وصفة.

تجنب تغيير المدخلات

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

List<int> bump(List<int> xs) =>
  xs.map((x) => x + 1).toList();

خط معالجة كامل

بتجميع الخطوات: صفِّ البيانات، ثم حوّلها، ثم اجمعها. يحوّل خط معالجة واحد سهل القراءة البيانات الخام إلى إجابة نهائية.

var avgx10 = [2, 4, 6]
  .map((n) => n * 10)
  .reduce((a, b) => a + b);

تحقق سريع

حدّد ما الذي يجعل الدالة نقية.

مراجعة

تتركب الدوال النقية في خطوط معالجة واضحة وكسولة: تصفية، ثم map، ثم تجميع. تبني الخطوات الصغيرة نتائج كبيرة يمكن التنبؤ بها. 🎯

الأسئلة الشائعة

هل درس «تركيب مسارات الدوال النقية» مجاني؟

نعم — نص درس «تركيب مسارات الدوال النقية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.

ماذا ستتعلم في «تركيب مسارات الدوال النقية»؟

سلسلة التحويلات بطريقة يمكن توقّعها تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟

لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تركيب مسارات الدوال النقية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟

نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الدوال من الدرجة الأعلى والكاريّنة
  2. ‏fold وreduce وexpand
  3. القيم القابلة للتكرار والمولّدات الكسولة باستخدام sync*
  4. تركيب مسارات الدوال النقية
← العودة إلى Dart Academy