Currying de funciones en JavaScript

JavaScriptJavaScriptBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploraremos el concepto de currying y uncurrying de funciones en JavaScript. El currying de funciones es una técnica que nos permite transformar una función que toma múltiples argumentos en una secuencia de funciones que cada una toma un solo argumento. Por otro lado, el uncurrying de funciones es el proceso de transformar una secuencia de funciones que cada una toma un solo argumento en una función que toma múltiples argumentos. A través de este laboratorio, aprenderemos cómo implementar ambas técnicas en JavaScript.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/cond_stmts("Conditional Statements") javascript/AdvancedConceptsGroup -.-> javascript/error_handle("Error Handling") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28676{{"Currying de funciones en JavaScript"}} javascript/data_types -.-> lab-28676{{"Currying de funciones en JavaScript"}} javascript/arith_ops -.-> lab-28676{{"Currying de funciones en JavaScript"}} javascript/comp_ops -.-> lab-28676{{"Currying de funciones en JavaScript"}} javascript/cond_stmts -.-> lab-28676{{"Currying de funciones en JavaScript"}} javascript/error_handle -.-> lab-28676{{"Currying de funciones en JavaScript"}} javascript/higher_funcs -.-> lab-28676{{"Currying de funciones en JavaScript"}} javascript/spread_rest -.-> lab-28676{{"Currying de funciones en JavaScript"}} end

Deshacer el currying de una función

Para deshacer el currying de una función hasta una profundidad especificada, utiliza la función uncurry.

const uncurry =
  (fn, n = 1) =>
  (...args) => {
    const next = (acc) => (args) => args.reduce((x, y) => x(y), acc);
    if (n > args.length) throw new RangeError("Arguments too few!");
    return next(fn)(args.slice(0, n));
  };

Para utilizar la función uncurry, pasa la función que quieres deshacer el currying y la profundidad hasta la que la quieres deshacer como argumentos. La función devolverá una función variádica que puedes llamar con los argumentos que quieres pasar.

Si no especificas la profundidad, la función deshacera el currying hasta la profundidad 1.

const add = (x) => (y) => (z) => x + y + z;
const uncurriedAdd = uncurry(add, 3);
uncurriedAdd(1, 2, 3); // 6

Si el número de argumentos que pasas es menor que la profundidad especificada, la función lanzará un RangeError.

Resumen

¡Felicidades! Has completado el laboratorio de Deshacer el currying de una función. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.