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
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/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.