|
3 | 3 |
|
4 | 4 | --- |
5 | 5 |
|
6 | | -# Каррирование (currying) и частичное применение (partial application) |
| 6 | +# Каррирование и частичное применение |
7 | 7 |
|
8 | 8 | До сих пор мы говорили только о привязывании `this`. Давайте шагнём дальше. |
9 | 9 |
|
@@ -110,9 +110,9 @@ user.sayNow("Hello"); |
110 | 110 | - Затем передаёт ей `...argsBound` -- аргументы из вызова `partial` (`"10:00"`) |
111 | 111 | - Затем передаёт ей `...args` -- аргументы, полученные обёрткой (`"Hello"`) |
112 | 112 |
|
113 | | -Итак, это легко сделать с помощью оператора расширения? |
| 113 | +Благодаря оператору расширения `...` это реализовать очень легко, не правда ли? |
114 | 114 |
|
115 | | -Так же есть готовый вариант [_.partial](https://lodash.com/docs#partial) из библиотеки lodash. |
| 115 | +Также есть готовый вариант [_.partial](https://lodash.com/docs#partial) из библиотеки lodash. |
116 | 116 |
|
117 | 117 | ## Каррирование |
118 | 118 |
|
@@ -169,15 +169,15 @@ function curry(f) { |
169 | 169 |
|
170 | 170 | Продвинутое каррирование позволяет вызывать функцию, как обычно, так и с частичным применением. |
171 | 171 |
|
172 | | -Например, у нас есть функция логирования `log(date, importance, message)`, которая подготавливает и выводит информацию. В реальных проектах у таких функций есть много других полезных возможностей, например, посылать логи по сети: |
| 172 | +Например, у нас есть функция логирования `log(date, importance, message)`, которая форматирует и выводит информацию. В реальных проектах у таких функций есть много других полезных возможностей, например, посылать логи по сети: |
173 | 173 |
|
174 | 174 | ```js |
175 | 175 | function log(date, importance, message) { |
176 | 176 | alert(`[${date.getHours()}:${date.getMinutes()}] [${importance}] ${message}`); |
177 | 177 | } |
178 | 178 | ``` |
179 | 179 |
|
180 | | -Давайте используем каррирование! |
| 180 | +А теперь давайте применим к ней каррирование! |
181 | 181 |
|
182 | 182 | ```js |
183 | 183 | log = _.curry(log); |
@@ -285,7 +285,7 @@ function curried(...args) { |
285 | 285 | Так как число аргументов всё ещё меньше 3-х, `curry` возвращает `pass`. |
286 | 286 | 3. Обёртка `pass` вызывается снова с `(3)`. Для следующего вызова `pass(3)` берёт предыдущие аргументы (`1`, `2`) и добавляет к ним `3`, делая вызов `curried(1, 2, 3)` -- наконец 3 аргумента, и они передаются оригинальной функции. |
287 | 287 |
|
288 | | -Если всё ещё не понятно, просто представьте последовательность вызовов в уме или на бумаге. |
| 288 | +Если всё ещё не понятно, просто распишите последовательность вызовов на бумаге. |
289 | 289 |
|
290 | 290 | ```smart header="Только функции с фиксированным количеством аргументов" |
291 | 291 | Для каррирования необходима функция с известным фиксированным количеством аргументов. |
|
0 commit comments