freeCodeCamp/curriculum/challenges/spanish/02-javascript-algorithms-an.../functional-programming/introduction-to-currying-an...

3.1 KiB

id title challengeType videoUrl localeTitle
587d7dab367417b2b2512b70 Introduction to Currying and Partial Application 1 Introducción al curry y aplicación parcial.

Description

La arity de una función es el número de argumentos que requiere. Currying una función significa convertir una función de N arity en N funciones de arity 1. En otras palabras, reestructura una función para que tome un argumento, luego devuelva otra función que tome el siguiente argumento, y así sucesivamente. Aquí hay un ejemplo:
// Función sin currículum
función unCurried (x, y) {
devuelve x + y;
}

// Función de curry
función curry (x) {
función de retorno (y) {
devuelve x + y;
}
}
Curried (1) (2) // Devoluciones 3
Esto es útil en su programa si no puede suministrar todos los argumentos a una función al mismo tiempo. Puede guardar cada llamada de función en una variable, que mantendrá la referencia de función devuelta que toma el siguiente argumento cuando esté disponible. Aquí hay un ejemplo que usa la función de curried en el ejemplo anterior:
// Llamar una función al curry en partes:
var funcForY = al curry (1);
console.log (funcForY (2)); // Impresiones 3
De manera similar, partial application puede describirse como la aplicación de unos pocos argumentos a una función a la vez y la devolución de otra función que se aplica a más argumentos. Aquí hay un ejemplo:
// Función imparcial
función imparcial (x, y, z) {
devuelve x + y + z;
}
var partialFn = imparcial.bind (esto, 1, 2);
parcialFn (10); // Devoluciones 13

Instructions

Rellene el cuerpo de la función de add para que use el curry para agregar los parámetros x , y y z .

Tests

tests:
  - text: <code>add(10)(20)(30)</code> debe devolver <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> debe devolver <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> debe devolver <code>66</code> .
    testString: 'assert(add(11)(22)(33) === 66, "<code>add(11)(22)(33)</code> should return <code>66</code>.");'
  - text: Su código debe incluir una declaración final que devuelva <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