Skip to content

Commit 1dd68d8

Browse files
committed
edit currying topic
1 parent b8ebc57 commit 1dd68d8

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

1-js/99-js-misc/03-currying-partials/article.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ debugNow("message"); // [HH:mm] DEBUG message
103103

104104
## الاستخدام المتقدم لتقنية currying
105105

106-
في حالة رغبتك في الدخول في التفاصيل ، إليك طريقة الاستخدام المتقدمة لتقنية currying للدوالّ ذات الوسطاء المتعددة والّتي يمكننا استخدامها أعلاه.
106+
في حالة رغبتك في الدخول في التفاصيل، إليك طريقة الاستخدام المتقدمة لتقنية currying للدوالّ ذات الوسطاء المتعددة والّتي يمكننا استخدامها أعلاه.
107107

108108
وهي مختصرة جدًا:
109109

@@ -157,16 +157,16 @@ function curried(...args) {
157157
عند تشغيله، هناك فرعين للتنفيذ من الجملة الشرطية `if`:
158158

159159
1. سيكون الاستدعاء الآن هكذا: إن كان عدد الوسطاء `args` المُمرّرة هو نفس العدد الدالة الأصليّة المعرّفة لدينا (`func.length`) أو أكثر، عندها نمرّر الاستدعاء له فقط.
160-
2. وإلا سيكون الاستدعاء جزئيًا: لم تُستدعى الدالّة `func` بعد. وإنما أعيد بدلًا منها دالّة المغلِّفة أخرى `pass`، والتي ستُعيد تطبيق الدالة `curried` مع تقديم الوسطاء السابقين مع الوسطاء الجدد. وثمّ في استدعاء الجديد سنحصل إما على دالة جزئية جديدة (إن لم يكُ عدد الوسطاء كافي) أو النتيجة النهائية.
160+
2. وإلا سيكون الاستدعاء جزئيًا: لم تُستدعى الدالّة `func` بعد. وإنما أعيد بدلًا منها دالّة المغلِّفة أخرى `pass`، والتي ستُعيد تطبيق الدالة `curried` مع تقديم الوسطاء السابقين مع الوسطاء الجدد. وثمّ في استدعاء الجديد سنحصل إما على دالة جزئية جديدة (إن لم يكُ عدد الوسطاء كافيا) أو النتيجة النهائية.
161161

162162
لنرى مثلًا ما يحدث في حال الاستدعاء الدالة هكذا `sum(a, b, c)‎`. أي بثلاث وسطاء، وبذلك يكون `sum.length = 3`.
163163

164164
عند استدعاء `curried(1)(2)(3)‎`:
165165

166166
1. الاستدعاء الأول `curried (1)‎` تحفظ `1` في بيئته اللغوية، ويُعيد دالّة المغلف `pass`.
167167
2. يُستدعى المغلّف `pass` مع الوسيط المُمرّر `(2)`: إذ يأخذ الوسطاء السابقين (`1`)، ويدمجهم مع الوسيط الذي حصل عليه وهو `(2)` ويستدعي الدالّة `curried(1, 2)‎` مع استخدام جميع ما حصل عليه من وسطاء. وبما أن عدد الوسطاء لا يزال أقل من 3 ، فإن الدالّة `curry` ستُعيد الدالّة `pass`.
168-
3. يُستدعى المغلّف `pass` مرة أخرى مع الوسيط المُمرّر `(3)`: ومن أجل الاستدعاء التالي `pass (3)‎` سيأخذ الوسطاء السابقين (`1`, `2`) ويضيف لهم الوسيط `3`، ليكون الاستدعاء هكذا `curried(1, 2, 3)‎`- أخيرًا لدينا ثلاث وسطاء، والّذين سيمرّروا للدالّة الأصلية.
169-
إذا لم تتوضح الفكرة حتى الآن ، فما عليك إلا تتبع تسلسل الاستدعاءات في عقلك أو على الورقة وستتوضح الأمور أكثر.
168+
3. يُستدعى المغلّف `pass` مرة أخرى مع الوسيط المُمرّر `(3)`: ومن أجل الاستدعاء التالي `pass (3)‎` سيأخذ الوسطاء السابقين (`1`, `2`) ويضيف لهم الوسيط `3`، ليكون الاستدعاء هكذا `curried(1, 2, 3)‎`- أخيرًا لدينا ثلاث وسطاء، والّذين سيمرّرون للدالّة الأصلية.
169+
إذا لم تتوضح الفكرة حتى الآن، فما عليك إلا تتبع تسلسل الاستدعاءات في عقلك أو على الورقة وستتوضح الأمور أكثر.
170170

171171
**ملاحظة**: تعمل مع الدوالّ ثابتة الطول فقط
172172

0 commit comments

Comments
 (0)