¿Qué es la función de curry en JavaScript?

Es una técnica en programación funcional, transformación de la función de múltiples argumentos en varias funciones de un solo argumento en secuencia. 
La traducción de función ocurre algo así,

function simpleFunction(param1, param2, param3, …..) => function curriedFunction(param1)(param2)(param3)(….

Simplemente envolvemos función dentro de una función, lo que significa que vamos a devolver una función de otra función para obtener este tipo de traducción. La función principal toma el primer argumento provisto y devuelve la función que toma el siguiente argumento y esto continúa repitiéndose hasta que finaliza el número de argumentos. Con suerte, la función que recibe el último argumento devuelve el resultado esperado.  

Nota: Un matemático estadounidense llamado Haskell Curry desarrolló esta técnica, por eso se llama curry.

Ejemplo 1: Digamos que tenemos la longitud, la anchura y la altura de un paralelepípedo y queremos construir una función que pueda calcular el volumen. Se está llamando a la función que, en consecuencia, ejecuta su código con los argumentos proporcionados y devuelve el resultado apropiado. Finalmente, console.log imprime el valor devuelto en la consola.

JavaScript

<script>
    function calculateVolume(length, breadth, height) {
        return length * breadth * height;
    }
    console.log(calculateVolume(4, 5, 6));
</script>

Producción:

120

Ejemplo 2: Este ejemplo explica la técnica de curry con la ayuda de cierres. Durante el hilo de ejecución , se invocará la función de calcular el volumen() . Dentro hay una función anónima , que recibe un parámetro y devuelve un código. Estamos exponiendo nuestra función desde otra función, por lo que se creará el cierre . El cierre siempre contiene la definición de la función junto con el entorno léxico del padre, ambas cosas permanecen conectadas como un paquete. Por lo tanto, no importa dónde las invoquemos, todas las funciones internas siempre tendrán acceso a la variable de su padre.
Tan pronto como obtengamos el resultado devuelto como una función, el siguiente argumento estará listo para pasar, este proceso continuará hasta la penúltima función. Finalmente, la palabra clave de retorno más interna devuelve el resultado esperado.

JavaScript

<script>
    function calculateVolume(length) {
        return function (breadth) {
            return function (height) {
                return length * breadth * height;
            }
        }
    }
    console.log(calculateVolume(4)(5)(6));
</script>

Producción:

120

Publicación traducida automáticamente

Artículo escrito por mrtwinklesharma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *