función Scala currificación (pellejo)
Currying (Currying) se refiere a la función original acepta dos parámetros en una nueva función acepta un parámetro del proceso. Una nueva función devuelve el segundo parámetro es la función original del parámetro.
Ejemplos
En primer lugar, definimos una función:
def add(x:Int,y:Int)=x+y
Así que cuando aplicamos, que debe ser usado de esta manera: add (1,2)
Ahora nos centraremos en este cambio de funciones de forma:
def add(x:Int)(y:Int) = x + y
Así que cuando aplicamos, que debe ser usado de esta manera: add (1) (2), los resultados finales son los mismos es 3, este enfoque (proceso) se llama currificación.
proceso de implementación
añadir (1) (2) es en realidad una función a su vez llama a dos (función no al curry) ordinario, la primera llamada con un parámetro x, el valor de retorno de un tipo de función, y el segundo parámetro y llamar a este tipo de función valor.
La primera evolucionó esencialmente en un método:
def add(x:Int)=(y:Int)=>x+y
A continuación, esta función es lo que quiere decir eso? Recepción de una x como parámetro y devuelve una función anónima, la definición de la función anónima es: recibir un argumento int y, el cuerpo de la función es x + y. Ahora llamamos a este método.
val result = add(1)
Devuelve un resultado, el valor de ese resultado debería ser una función anónima: (a: Int) => 1 + y
Así que con el fin de obtener resultados, seguimos pidiendo el resultado.
val sum = result(2)
Por último, imprima resultado es 3.
ejemplo completo
Aquí está un ejemplo completo:
object Test { def main(args: Array[String]) { val str1:String = "Hello, " val str2:String = "Scala!" println( "str1 + str2 = " + strcat(str1)(str2) ) } def strcat(s1: String)(s2: String) = { s1 + s2 } }
Aplicación del código anterior, la salida es:
$ scalac Test.scala $ scala Test str1 + str2 = Hello, Scala!