¿Qué es Currying?

El Currying es una técnica, que permite transformar una función que usa múltiples argumentos, en un grupo de funciones que acepta menos argumentos de los que esperaba.

Ejemplo Básico

Ejemplifiquemos con una función sencilla, supongamos que …


This content originally appeared on DEV Community and was authored by Gonzalo Barrera

El Currying es una técnica, que permite transformar una función que usa múltiples argumentos, en un grupo de funciones que acepta menos argumentos de los que esperaba.

Ejemplo Básico

Ejemplifiquemos con una función sencilla, supongamos que queremos aplicar una suma

// Esta función recibe 2 argumentos y retorna el valor
function suma(a, b) {
  return a + b;
}

const result = suma(3, 4);
console.log(result); // 7

La versión "currificada", sería así

// Esta función recibe 1 argumento, 
// retorna otra función que recibe un argumente 
// y esa función retorna el valor
function suma(a) {
  return function (b) {
    return a + b;
  };
}

const result = suma(3)(4);
console.log(result); // 7

Tal como esperábamos, el resultado es el mismo, pero ahora podríamos hacer algo como esto

const suma3 = suma(3);
const result = suma3(4);
console.log (result); // 7

Aunque este ejemplo es muy sencillo, se entiende la idea del concepto, que es crear aplicaciones más pequeñas que nos permitan reutilizarse en nuestro código, además de mejorar nuestros test

Implementación con arrow function 
// Función Normal
const suma = (a, b) => a + b;

// Función Currificada
const suma = a => b => a + b;

Ejemplo Practico

Imaginemos que necesitamos crear una orden de compra para un cliente, y la referencia que tenemos es el nombre

const printOrder = (name, product, cost) => {
  const order = `Client: ${name} add product ${product} and cost $${cost}`;
  return order;
};

console.log(printOrder("Steve", "Computer", "5000"));
console.log(printOrder("Steve", "Phone", "6000"));
console.log(printOrder("Steve", "Mouse", "7000"));

// Client: Steve add product Phone and cost $6000 
// Client: Steve add product Mouse and cost $7000 
// Client: Steve add product Computer and cost $5000 

Ahora, con una función currificada, podemos evitar tener que ingresar el nombre del cliente en cada llamada

const printOrderCurried = (name) => (product) => (cost) => {
  const order = `Client: ${name} add product ${product} and cost $${cost}`;
  return order;
};

const order = printOrderCurried("Steve");
console.log(order("Computer")("5000"));
console.log(order("Phone")("6000"));
console.log(order("Mouse")("7000"));

// Client: Steve add product Phone and cost $6000 
// Client: Steve add product Mouse and cost $7000 
// Client: Steve add product Computer and cost $50

Con esto ya tenemos la base para poder crear código mucho mas funcional y reutilizable en nuestras aplicaciones.


This content originally appeared on DEV Community and was authored by Gonzalo Barrera


Print Share Comment Cite Upload Translate Updates
APA

Gonzalo Barrera | Sciencx (2021-05-31T20:57:05+00:00) ¿Qué es Currying?. Retrieved from https://www.scien.cx/2021/05/31/que-es-currying/

MLA
" » ¿Qué es Currying?." Gonzalo Barrera | Sciencx - Monday May 31, 2021, https://www.scien.cx/2021/05/31/que-es-currying/
HARVARD
Gonzalo Barrera | Sciencx Monday May 31, 2021 » ¿Qué es Currying?., viewed ,<https://www.scien.cx/2021/05/31/que-es-currying/>
VANCOUVER
Gonzalo Barrera | Sciencx - » ¿Qué es Currying?. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/05/31/que-es-currying/
CHICAGO
" » ¿Qué es Currying?." Gonzalo Barrera | Sciencx - Accessed . https://www.scien.cx/2021/05/31/que-es-currying/
IEEE
" » ¿Qué es Currying?." Gonzalo Barrera | Sciencx [Online]. Available: https://www.scien.cx/2021/05/31/que-es-currying/. [Accessed: ]
rf:citation
» ¿Qué es Currying? | Gonzalo Barrera | Sciencx | https://www.scien.cx/2021/05/31/que-es-currying/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.