Latest web development tutorials

Funzione Scala currying (Currying)

funzione Scala funzione Scala

Currying (currying) si riferisce alla funzione originale accetta due parametri in una nuova funzione accetta un parametro del processo. Una nuova funzione restituisce il secondo parametro è la funzione originale del parametro.

Esempi

In primo luogo, si definisce una funzione:

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

Così, quando abbiamo applicato, dovrebbe essere usato in questo modo: aggiungere (1,2)

Ora guardiamo a questa forma cambiamento di funzione:

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

Così, quando abbiamo applicato, dovrebbe essere usato in questo modo: add (1) (2), i risultati finali sono lo stesso è 3, questo approccio (processo) è chiamato currying.

processo di implementazione

add (1) (2) è in realtà una funzione a sua volta chiama due ordinaria (funzione non al curry), la prima chiamata utilizzando un parametro x, il valore di ritorno di un tipo di funzione, e il secondo parametro y chiamare questo tipo di funzione valore.

Il primo in sostanza si è evoluto in un metodo:

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

Allora questa funzione è che cosa significa? Ricezione x come parametro e restituisce una funzione anonima, la definizione della funzione anonima è: ricevere un argomento y Int, il corpo della funzione è x + y. Ora si chiama questo metodo.

val result = add(1) 

Restituisce un risultato, il valore di tale risultato dovrebbe essere una funzione anonima: (y: Int) => 1 + y

Quindi, al fine di ottenere risultati, continuiamo a chiamare il risultato.

val sum = result(2)

Infine, stampare risultato è 3.

esempio completo

Ecco un esempio 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
   }
}

L'attuazione del codice di cui sopra, l'output è:

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

funzione Scala funzione Scala