Funciones de curry en Scala con ejemplos

Currying en Scala es simplemente una técnica o un proceso de transformación de una función. Esta función toma múltiples argumentos en una función que toma un solo argumento. Se aplica ampliamente en múltiples lenguajes funcionales.
 
Sintaxis

def function name(argument1, argument2) = operation

Entendamos con un ejemplo simple,
Ejemplo:

// Scala program add two numbers
// using currying Function
object Curry
{
    // Define currying function
    def add(x: Int, y: Int) = x + y;
  
    def main(args: Array[String])
    {
        println(add(20, 19));
    }
}

Producción:

39

Aquí, hemos definido la función de suma que toma dos argumentos (x e y) y la función simplemente suma x e y y nos da el resultado, llamándolo en la función principal.

Otra forma de declarar la función curring
Supongamos que tenemos que transformar esta función add en una función Curry, es decir, transformar la función que toma dos (múltiples) argumentos en una función que toma un (único) argumento.
 
Sintaxis

def function name(argument1) = (argument2) => operation

Ejemplo

// Scala program add two numbers
// using Currying function
  
object Curry
{
    // transforming the function that 
    // takes two(multiple) arguments into 
    // a function that takes one(single) argument.
    def add2(a: Int) = (b: Int) => a + b;
  
    // Main method
    def main(args: Array[String])
    {
        println(add2(20)(19));
    }
}

Producción:

39

Aquí, hemos definido la función add2 que toma solo un argumento a y vamos a devolver una segunda función que tendrá el valor de add2. La segunda función también tomará un argumento, digamos b y esta función cuando se llama en main, toma dos paréntesis (add2()()), donde el primer paréntesis es de la función add2 y el segundo paréntesis es de la segunda función. Devolverá la suma de dos números, es decir a+b . Por lo tanto, hemos currado la función de suma, lo que significa que hemos transformado la función que toma dos argumentos en una función que toma un argumento y la función misma devuelve el resultado.

Función Curry usando aplicación parcial

Tenemos otra forma de usar esta función Curry y es la función Parcialmente aplicada . Entonces, tomemos un ejemplo simple y comprendamos. hemos definido una suma variable en la función principal

Ejemplo

// Scala program add two numbers
// using Currying function
object Curry
{
    def add2(a: Int) = (b: Int) => a + b;
  
    // Main function
    def main(args: Array[String])
    {
        // Partially Applied function.
        val sum = add2(29);
        println(sum(5));
    }
}

Producción:

34

Aquí, solo se pasa un argumento al asignar la función al valor. El segundo argumento se pasa con el valor y estos argumentos se agregan y se imprime el resultado.

Además, otra forma (sintaxis) de escribir la función de curry.
 
Sintaxis

def function name(argument1) (argument2) = operation

Ejemplo

// Scala program add two numbers
// using Currying function
object Curry
{
    // Curring function declaration
    def add2(a: Int) (b: Int) = a + b;
  
    def main(args: Array[String])
    {
        println(add2(29)(5));
    }
}

Producción:

34

Para esta sintaxis, la función de aplicación parcial también cambia.
Ejemplo

// Scala program add two numbers
// using Currying function
object Curry
{
    // Curring function declaration
    def add2(a: Int) (b: Int) = a + b;
  
    def main(args: Array[String])
    {
       // Partially Applied function.
        val sum=add2(29)_;
        println(sum(5));
    }
}

Producción:

34

Aquí, solo se agrega el ‘_’ después de llamar a la función add2 para el valor de la suma.

Publicación traducida automáticamente

Artículo escrito por smadhavi309 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 *