Latest web development tutorials

función Scala currificación (pellejo)

función Scala función Scala

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!

función Scala función Scala