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
add
para usar o currying para adicionar os parâmetros x
, y
e z
. add(10)(20)(30)
deve retornar 60
.
testString: 'assert(add(10)(20)(30) === 60, "add(10)(20)(30)
should return 60
.");'
- text: add(1)(2)(3)
deve retornar 6
.
testString: 'assert(add(1)(2)(3) === 6, "add(1)(2)(3)
should return 6
.");'
- text: add(11)(22)(33)
deve retornar 66
.
testString: 'assert(add(11)(22)(33) === 66, "add(11)(22)(33)
should return 66
.");'
- text: Seu código deve incluir uma declaração final que retorne x + y + z
.
testString: 'assert(code.match(/[xyz]\s*?\+\s*?[xyz]\s*?\+\s*?[xyz]/g), "Your code should include a final statement that returns x + y + z
.");'
```