الدرس 3 من 8
حفظ نتائج الدالة
- 13 دقيقة
- 6 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
لا تحسب الشيء نفسه مرّتين
الشرح
إذا كانت الدالة نقيّة، أي أنها تعطي دائمًا الناتج نفسه للمُدخل نفسه ولا تغيّر شيئًا خارجها، فحسابها مرّتين للمُدخل نفسه هدر لا فائدة منه.
وفكرة memoize أن تغلّف الدالة وتحفظ كل نتيجة تحت مفتاح يمثّل مُدخلاتها، فإن وجدت المفتاح محفوظًا أرجعت نتيجته، وإلا حسبتها ثم حفظتها.
وMap أنسب هنا من الكائن العادي، لأنها تقبل أي نوع مفتاحًا، ولا ترث خصائص قد تتعارض مع مفاتيحك.
تنبيه: لا تستعمل هذه الطريقة مع دالة غير نقيّة، فإن كانت تقرأ الوقت أو تعتمد على حالة خارجها فستُرجع لك نتيجة قديمة.
المطلوب
اكتب memoize(fn) بحيث لا تُستدعى الدالة الأصلية مرّتين للمُدخل نفسه.
الفحوص
6 فحوص- الدالة memoize تُرجع دالة
- النتيجة صحيحة
- المُدخل نفسه يُحسب مرّة واحدة
- مُدخل مختلف يُحسب من جديد
- تفرّق بين الوسائط المتعدّدة
- ثلاثة استدعاءات في الصفحة احتاجت حسابًا واحدًا