Каррирование c переменным количеством аргументов
помогите разобраться с каррированием. Я легко могу изобразить функцию с несколькими параметрами типа sum(a)(b)...и тд. и тп. при помощи каррирования:
function sum() {
return (a) => {
return (b) => {
return a + b
}
}
}
Но, как только количество элементов в аргументе становится больше единицы, все мои потуги руинятся в нескончаемые ошибки.
Внимание вопрос: Как мне добраться до внутренностей аргументов. Задача: получить сумму всех элементов. Пример: sum(1, 7)(4, 1, 9) должно вернуть 22
Спасибо за внимание!
Ответы (1 шт):
Автор решения: UserTest013
→ Ссылка
function curry(func) {
return function f(...args) {
if (args.length >= func.length) {
return func.apply(this, args);
} else {
return function(...args2) {
return f.apply(this, args.concat(args2));
}
}
};
}
const sum = curry((a, b, c, d, e) => a + b + c + d + e);
console.log(sum(1, 7)(4, 1, 9));