Latest web development tutorials

Scala fonction currying (Currying)

fonction Scala fonction Scala

Corroyage (corroyage) fait référence à la fonction d'origine accepte deux paramètres dans une nouvelle fonction accepte un paramètre du processus. Une nouvelle fonction retourne le deuxième paramètre est la fonction initiale du paramètre.

Exemples

Tout d'abord, nous définissons une fonction:

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

Ainsi, lorsque nous avons appliqué, il doit être utilisé comme ceci: ajouter (1,2)

Maintenant, nous regardons cette forme de changement de fonction:

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

Ainsi, lorsque nous avons appliqué, il doit être utilisé comme ceci: add (1) (2), les résultats finaux sont les mêmes est 3, cette approche (processus) est appelé currying.

processus de mise en œuvre

ajouter (1) (2) est en fait une fonction appelle à son tour deux (fonction non-cari) ordinaire, le premier appel à l'aide d'un paramètre x, la valeur de retour d'un type de fonction, et le second paramètre y appeler ce type de fonction valeur.

Le premier essentiellement évolué en une méthode:

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

Ensuite, cette fonction est ce que cela signifie? Réception d'un x comme paramètre et retourne une fonction anonyme, la définition de la fonction anonyme est: recevoir un argument Int y, le corps de la fonction est x + y. Maintenant, nous appelons cette méthode.

val result = add(1) 

Retourne un résultat, la valeur de ce résultat devrait être une fonction anonyme: (y: Int) => 1 + y

Ainsi, afin d'obtenir des résultats, nous continuons à appeler le résultat.

val sum = result(2)

Enfin, imprimez résultat est 3.

exemple complet

Voici un exemple complet:

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
   }
}

Mise en œuvre du code ci-dessus, la sortie est:

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

fonction Scala fonction Scala