Funzione Scala currying (Currying)
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!