3.1 KiB
3.1 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
587d7dab367417b2b2512b70 | Introduction to Currying and Partial Application | 1 | Introdução ao Currying e Aplicação Parcial |
Description
arity
de uma função é o número de argumentos requeridos. Currying
uma função significa converter uma função de N arity
em N funções de arity
1. Em outras palavras, ela reestrutura uma função, de modo que recebe um argumento, depois retorna outra função que recebe o próximo argumento, e assim por diante. Aqui está um exemplo: // Função sem curryIsso é útil em seu programa se você não puder fornecer todos os argumentos para uma função de uma só vez. Você pode salvar cada chamada de função em uma variável, que conterá a referência da função retornada que recebe o próximo argumento quando estiver disponível. Aqui está um exemplo usando a função
function unCurried (x, y) {
return x + y;
}
// Função curry
função curry (x) {
função de retorno (y) {
return x + y;
}
}
curry (1) (2) // Retorna 3
curried
no exemplo acima: // Chame uma função curry em partes:Da mesma forma,
var funcForY = curry (1);
console.log (funcForY (2)); // Imprime 3
partial application
pode ser descrita como aplicando alguns argumentos a uma função por vez e retornando outra função que é aplicada a mais argumentos. Aqui está um exemplo: // Função imparcial
função imparcial (x, y, z) {
return x + y + z;
}
var partialFn = impartial.bind (isso, 1, 2);
partialFn (10); // Retorna 13
Instructions
add
para usar o currying para adicionar os parâmetros x
, y
e z
. Tests
tests:
- text: <code>add(10)(20)(30)</code> deve retornar <code>60</code> .
testString: 'assert(add(10)(20)(30) === 60, "<code>add(10)(20)(30)</code> should return <code>60</code>.");'
- text: <code>add(1)(2)(3)</code> deve retornar <code>6</code> .
testString: 'assert(add(1)(2)(3) === 6, "<code>add(1)(2)(3)</code> should return <code>6</code>.");'
- text: <code>add(11)(22)(33)</code> deve retornar <code>66</code> .
testString: 'assert(add(11)(22)(33) === 66, "<code>add(11)(22)(33)</code> should return <code>66</code>.");'
- text: Seu código deve incluir uma declaração final que retorne <code>x + y + z</code> .
testString: 'assert(code.match(/[xyz]\s*?\+\s*?[xyz]\s*?\+\s*?[xyz]/g), "Your code should include a final statement that returns <code>x + y + z</code>.");'
Challenge Seed
function add(x) {
// Add your code below this line
// Add your code above this line
}
add(10)(20)(30);
Solution
// solution required