Latest web development tutorials

Scala função currying (Currying)

função Scala função Scala

Currying (Currying) refere-se à função original aceita dois parâmetros em uma nova função aceita um parâmetro do processo. Uma nova função retorna o segundo parâmetro é a função original do parâmetro.

Exemplos

Primeiro, vamos definir uma função:

def add(x:Int,y:Int)=x+y

Assim, quando aplicado, ele deve ser usado como este: adicionar (1,2)

Agora vamos olhar para esta forma mudança de função:

def add(x:Int)(y:Int) = x + y

Assim, quando aplicado, ele deve ser usado assim: add (1) (2), os resultados finais são os mesmos é de 3, esta abordagem (processo) é chamado currying.

processo de implementação

adicionar (1) (2) é realmente uma função por sua vez chama dois (função não-curry) ordinária, a primeira chamada utilizando um parâmetro x, o valor de retorno de um tipo de função, eo segundo parâmetro y chamar este tipo de função valor.

A primeira evoluiu para essencialmente um método:

def add(x:Int)=(y:Int)=>x+y

Em seguida, essa função é o que isso significa? Receber um x como um parâmetro e retorna uma função anônima, a definição da função anônima é: receber um Int argumento y, o corpo da função é x + y. Agora vamos chamar esse método.

val result = add(1) 

Retorna um resultado, o valor desse resultado deve ser uma função anônima: (y: int) => 1 + y

Portanto, a fim de obter resultados, continuamos a chamar o resultado.

val sum = result(2)

Finalmente, imprima resultado é 3.

exemplo completo

Aqui está um exemplo 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
   }
}

Implementação do código acima, a saída é:

$ scalac Test.scala
$ scala Test
str1 + str2 = Hello, Scala!

função Scala função Scala