Загрузка…
Загрузка…
Каррирование — превращение функции от нескольких аргументов в цепочку функций от одного аргумента каждая:
f(a, b, c) → f(a)(b)(c).
function curryAdd(a) {
return function (b) {
return function (c) {
return a + b + c;
};
};
}
curryAdd(1)(2)(3); // 6
// стрелками
const add = (a) => (b) => (c) => a + b + c;
add(1)(2)(3); // 6Частичное применение без полного каррирования:
const add = (a, b, c) => a + b + c;
const add1 = add.bind(null, 1); // зафиксировали первый аргумент| Каррирование | Partial application | |
|---|---|---|
| Идея | всегда по одному аргументу | зафиксировать несколько аргументов сразу |
| Вызов | f(a)(b)(c) | f(a, b)(c) или partial(f, a)(b, c) |
const double = multiply(2));На собеседовании полезно написать простой curry вручную и объяснить разницу с bind/partial.
