لقد أعطت مسودة مواصفات ECMAScript 6 العديد من مصادر السعادة لمطوّري JavaScript المعاصرين. لقد تناولنا بعض فئات المجموعات الجديدة وfor..of
حلقات التكرار في مشاركة سابقة. في هذه المشاركة، سنتحدث عن شيء يرتبط بشكل وثيق بدورات for..of
: دوالّ المولد.
تتوفّر مجموعة من المواد الرائعة التي توضّح سبب استخدام مولدات الطاقة وكيفية استخدامها. باختصار، أدوات إنشاء القوائم هي دوال خاصة تنشئ أدوات تكرار، وأدوات التكرار هي عناصر تتضمّن طريقة next()
التي يمكن استدعاؤها للحصول على قيمة. ضمن دالة إنشاء، تقدّم الكلمة الرئيسية yield
قيمة next()
. يؤدي استخدام yield
إلى تعليق تنفيذ دالة المولد، مع الحفاظ على الحالة إلى أن يتم استدعاء next()
مرة أخرى، وعند هذه النقطة يبدأ الرمز البرمجي من جديد ويستمر إلى أن yield
قيمة أخرى (أو إلى أن تنتهي دالة المولد). هناك العديد من حالات الاستخدام الأساسية لدوالّ إنشاء السلاسل، مثل استخدامها للتكرار على الأرقام في تسلسل فيبوناتشي.
بعد أن تعرّفت على الأساسيات، لنطّلِع بالتفصيل على نموذج JavaScript الذي يتناول بعض المشاكل المتعلقة بالعمل مع المولدات. تتوفّر تعليقات مفصّلة في جميع أنحاء الرمز، ويمكنك تجربة الإصدار المباشر من الرمز قبل قراءته:
ما هي بعض النقاط الرئيسية التي يمكن استخلاصها من الرمز؟
أولاً، يؤدي إنشاء مُنشئ إلى إنشاء مُكرّر فريد له حالته الخاصة، ويمكنك تمرير مَعلمات إلى مُنشئ المُنشئ التي يمكنها التحكّم في السلوك.
ثانيًا، يمكنك تمرير مَعلمة عند استدعاء طريقة next()
للمكرّر، وسيتمّ تعيين هذه القيمة إلى أيّ عنصر على الجانب الأيسر من عبارة yield
من طلب استدعاء المكرّر السابق. هذه طريقة رائعة لتغيير ناتج أداة التكرار، وسنستخدمها هنا للتحكّم في ما إذا كانت الكلمة التي يتم عرضها مكتوبة بأحرف كبيرة أم لا. إذا كنت تريد التأثير في القيمة الأولى التي يتمّ إنشاؤها، يمكنك إجراء ذلك من خلال مَعلمة لإنشاء المُنشئ.
أخيرًا، يمكن أن تُنشئ المولدات أدوات تكرار محدودة أو لانهائية. إذا كنت تعمل مع أداة تكرار لا نهائية، تأكَّد من أنّ لديك نوعًا من الشروط النهائية استنادًا إلى القيمة yield
ed، فمن السهل جدًا كتابة حلقات لا نهائية عن طريق الخطأ، خاصةً عند استخدام for..of
للتكرار. إذا كنت تعمل مع أداة تكرار محدودة من خلال طلبات إلى next()
، تشير سمة .done
للعنصر الذي يتم إرجاعه إلى ما إذا كان التكرار قد اكتمل.
نأمل أن يقدّم لك هذا المثال، إلى جانب المراجع الأخرى المتاحة على الويب، بعض الإثارة ويشجّعك على التفكير في كيفية استخدام منشئي النماذج في رمزك البرمجي. تتوافق الإصدارات من Firefox بدءًا من 31 وChrome بدءًا من 39 مع أدوات إنشاء التقارير بشكلٍ أصلي. يقدّم مشروع Regenerator دعمًا لإنشاء ملفات تعريف الارتباط للمتصفّحات الأخرى، ويمكنك أيضًا استخدام Traceur.
نشكر إريك أرفيدسون على مساعدته في مراجعة هذه المقالة.