@Torento20345

Как создать карирование для этой функции со своим замыканием?

Есть функция, которая корректно работает, если не переприсваивать ее на середине в другую переменную
Как сделать так, чтобы
let a = carry(sum)(1)(2);
console.log(a(3)) -> 6
console.log(a(8)) -> 11

В sum может оказаться n-число аргументов
В закомментированной функции пример того, как я пытался изначально решить проблему, но не смогу понять, как мне одновременно передать n-количество аргументов для функции и попутно другие данные для замыкания
https://jsfiddle.net/se5j2om4/3/
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
@antares4045
const sum = (a, b, c) => a + b + c

function carry(fn, argsCount=null, baseArgs=[]){
    argsCount = argsCount === null ? fn.length : argsCount
    if(baseArgs.length >= argsCount){
        return fn.apply(null, baseArgs)
    }
    return function(...args){
        return carry(fn, argsCount, baseArgs.concat(args))
    }
}

let a = carry(sum)

let b = a(1)(2)

console.log(b(3)) //6
console.log(b(10)) //13


сложно вы вопрос сформулировали, я пока вникал что именно у вас "не работает", устать успел
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы