Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

173
Visualizações
¿Es esta la forma recursiva correcta de escribir la función de curry?

No puedo entender si esta función curry recursiva es correcta o no.

 function curry(fn) { return function curryInner(...args) { if (args.length >= fn.length) return fn(...args); return function (...next) { return curryInner(...args, ...next); }; }; } const example = { multiplier: 5, calculate: function (a, b) { return (a + b) * this.multiplier; }, }; example.curriedVersion = curry(example.calculate); console.log(example.calculate(1, 2)); console.log(example.curriedVersion(1)(2));

Tengo la función de curry implementada con enlace, pero no estoy seguro de por qué funciona y recursiva no. ¿Me pueden ayudar a entender esto? Creo que mi comprensión del contexto en estas funciones es incorrecta.

 function curry(func) { return function curried(...args) { if (args.length >= func.length) { return func.apply(this, args) } else { return curried.bind(this, ...args) } } }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Su cálculo es correcto, el problema está en this.multiplier .

Cuando usa la expresión example.calculate sin llamar a la función, no vincula this . Entonces this.multiplier será undefined .

Use example.calculate.bind(example) y su curring funcionará como se esperaba.

 function curry(fn) { return function curryInner(...args) { if (args.length >= fn.length) return fn(...args); return function (...next) { return curryInner(...args, ...next); }; }; } const example = { multiplier: 5, calculate: function (a, b) { return (a + b) * this.multiplier; }, }; example.curriedVersion = curry(example.calculate.bind(example)); console.log(example.calculate(1, 2)); console.log(example.curriedVersion(1)(2));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda