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.
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