getTea
من التحدي الأخير للتعامل مع طلبات الشاي المختلفة. يمكننا تعديل getTea
لقبول وظيفة كمعلمة لتكون قادرة على تغيير نوع الشاي الذي تقوم بإعداده. وهذا يجعل getTea
أكثر مرونة ، ويعطي للمبرمج مزيدًا من التحكم عند تغيير طلبات العميل. لكن أولاً ، دعونا نغطي بعض المصطلحات الفنية: Callbacks
هي الوظائف التي يتم تمريرها أو تمريرها إلى وظيفة أخرى لتحديد طلب هذه الوظيفة. ربما تكون قد شاهدتهم مروراً بطرق أخرى ، على سبيل المثال في filter
، تخبر وظيفة معاودة الاتصال JavaScript عن كيفية تصفية مصفوفة. تدعى الدالات التي يمكن تعيينها لمتغير ، يتم تمريرها إلى دالة أخرى ، أو يتم إرجاعها من دالة أخرى تمامًا مثل أي قيمة عادية أخرى ، وظائف first class
. في JavaScript ، تعد جميع الوظائف من وظائف first class
. تسمى الدالات التي تأخذ دالة كوسيطة ، أو ترجع دالة كقيمة إرجاع ، وظائف higher order
. عندما يتم تمرير الوظائف إلى وظيفة أخرى أو يتم إرجاعها من وظيفة أخرى ، فإن تلك الوظائف التي يتم تمريرها أو إعادتها يمكن أن تسمى lambda
. tea4GreenTeamFCC
و tea4BlackTeamFCC
المتغيرات، على التوالي. لاحظ أن وظيفة getTea
قد تم تعديلها بحيث تأخذ الآن وظيفة كالوسيطة الأولى. ملاحظة: يتم توفير البيانات (عدد أكواب الشاي) كوسيطة أخيرة. سنناقش هذا أكثر في الدروس اللاحقة. tea4GreenTeamFCC
المتغير tea4GreenTeamFCC
على 27 كوب شاي أخضر للفريق.
testString: 'assert(tea4GreenTeamFCC.length === 27, "The tea4GreenTeamFCC
variable should hold 27 cups of green tea for the team.");'
- text: يجب أن يحتفظ المتغير tea4GreenTeamFCC
من الشاي الأخضر.
testString: 'assert(tea4GreenTeamFCC[0] === "greenTea", "The tea4GreenTeamFCC
variable should hold cups of green tea.");'
- text: يجب أن يحتفظ المتغير tea4BlackTeamFCC
13 كوب من الشاي الأسود.
testString: 'assert(tea4BlackTeamFCC.length === 13, "The tea4BlackTeamFCC
variable should hold 13 cups of black tea.");'
- text: يجب أن يحتفظ المتغير tea4BlackTeamFCC
الشاي الأسود.
testString: 'assert(tea4BlackTeamFCC[0] === "blackTea", "The tea4BlackTeamFCC
variable should hold cups of black tea.");'
```