A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Currying

16/23
Recursos

Gracias a los closures es posible implementar el Currying, descomponer funciones complejas en otras funciones m谩s peque帽as donde cada funci贸n recibe un solo argumento. A continuaci贸n un ejemplo:

// Sin Currying
function sumThreeNumbers(a, b, c) {
        return a + b + c
}

console.log(sumThreeNumbers(1, 2, 3)) // 6

function sumThreeNumbers(a) {
        return function(b) {
                return function(c) {
                        return a + b + c
                }
        }
}

console.log(sumThreeNumbers(1)(2)(3)) // 6

Aportes 26

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Versi贸n reducida de la funci贸n sumThreeNumbers utilizando currying y arrow functions:

const sumThreeNumbers = a => b => c => a + b + c

console.log(sumThreeNumbers(1)(2)(3)) // 6

Cuales son las ventajas en el mundo real de usar Currying?

Ac谩 les dejo un hilo interesante sobre el currying 鈥
Entendiendo el currying

entendi el concepto pero no entiendo cual es el beneficio de descomponerlas de este modo?

mejor mantenimiento?

Si quieren usar currying recomiendo Ramda.js https://ramdajs.com/docs/#curry.

Ademas todas las funciones de ramda ya vienen curryficadas.

creo que se pueden hacer cosas muy bonitas como estas, el editor tambi茅n te ayuda bastante con el autocompletado y aparte puedes utilizar el dato que diste al comienzo para moldearlo a algo final. 馃槂

const obtenerNumero = (x)=> ({
    sumar: (z) => console.log(z + x),
    multiplicar: (z)=> console.log(z * x)
  })

obtenerNumero(50).sumar(50)

La verdad me da perece usar currying, prefiero mandar 3 par谩metros en una funci贸n y listo鈥

Alguien tienen el link a la documentaci贸n para entender mejor todo esto!! y saber si tambien se puede usar en node

Creo que el currying mal aplicado se podr铆a llegar a caer en el Callback Hell, verdad?
Porqu茅 con tres argumentos est谩 todo ch茅vere, pero cuando sean 5 o yo que s茅 10鈥eligro, no?

驴Cu谩l es la diferencia entre funciones compuestas y currying?

Ejemplo en forma de arrow function:

const sumThreeNumbers = a => b => c => a + b + c;

Genial la forma de explicar del profesor! Se entiende todo muy bien! 馃憦

Como hacer lo mismo pero pasando un solo par谩metro a la primera funci贸n

function addThreeNumbers(a: number = 0): Function {
  return function (b: number = a + 1): Function {
    return function (c: number = b + 1): number {
      return a + b + c;
    };
  };
}

console.log(
  addThreeNumbers(1)()() // 6
);

Una vez m谩s conozco me presentan el nombre de algo que ya hab铆a utilizado pero sin saber jaja

Creo que esto representa lo que est谩 escrito en libros de cualquier lenguaje de programaci贸n moderno鈥
< divide y venceras > 贸 tambi茅n, lo que se conoce como la abstracci贸n

genial, la idea de funciones currificadas seria ir pasando los argumentos de una funci贸n parcialmente a medida que son obtenidos.

let a = sumThreeNumbers(1)
let b = a(2)
let c = b(3)

console.log(c) // 6

Interesante

const sumThreeNumber = a => b => c => a + b + c
console.log(sumThreeNumber(1)(2)(3))

Super 馃槂

El currying es buena pr谩ctica para entender las bases de composici贸n de funciones y funciones de orden mayor. La verdad es una forma diferente pero a la vez tiene toda la l贸gica del mundo.

y as铆 se hace con Arrow Function prueben y ver谩n que da el mismo resultado 馃槂

const sumThreeNumber = a => b => c => a+b+c

console.log(sumThreeNumber(1) (2) (3))

este es mi aporte

mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm

se supone que esto es una explicaci贸n?

P茅simo servicio XD
ahahhahahahhah

Vale, comprendo, practicamente el currying es uasr el concepto de Closure para dividir nuestros argumentos, y gracias al scope, en la funci贸n m谩s baja por as铆 decirlo, tenemos acceso a todos los argumentos