Загрузка...
Загрузка...
Продолжая работу с платформой, вы принимаете условия Политики конфиденциальности и использование файлов cookie.
Каррирование (Currying) — это техника преобразования функции с несколькими аргументами в последовательность функций, каждая из которых принимает по одному аргументу.
function sum(a) {
return function (b) {
return function (c) {
return a + b + c;
};
};
}
console.log(sum(1)(2)(3)); // 6
Здесь sum — каррированная функция, она принимает один аргумент за раз.
function multiply(a) {
return function (b) {
return a * b;
};
}
const double = multiply(2); // частично применили функцию
console.log(double(5)); // 10
function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) {
return fn(...args);
} else {
return (...next) => curried(...args, ...next);
}
};
}
function add(a, b, c) {
return a + b + c;
}
const curriedAdd = curry(add);
console.log(curriedAdd(1)(2)(3)); // 6
console.log(curriedAdd(1, 2)(3)); // 6
| Характеристика | Обычная функция | Каррированная функция |
|---|---|---|
| Вызов | sum(1, 2, 3) | sum(1)(2)(3) |
| Применение аргументов | Все сразу | По одному |
| Переиспользование | Сложнее | Удобно фиксировать часть аргументов |
Итог:
Каррирование — мощный приём в функциональном программировании. Он помогает писать более модульный, читаемый и повторно используемый код, особенно в цепочках и колбэках.