Latest web development tutorials

Scala Funktion currying (Currying)

Scala-Funktion Scala - Funktion

Currying (Currying) bezieht sich auf die ursprüngliche Funktion zwei Parameter in eine neue Funktion übernimmt einen Parameter des Prozesses akzeptiert. Eine neue Funktion gibt der zweite Parameter die ursprüngliche Funktion des Parameters ist.

Beispiele

Zunächst definieren wir eine Funktion:

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

Wenn wir also angewendet, sollte es wie folgt verwendet werden: add (1,2)

Jetzt schauen wir auf diese Funktion Form ändern:

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

Wenn wir also angewendet, sollte es wie folgt verwendet werden: add (1) (2), die endgültigen Ergebnisse sind gleich 3 ist, dieser Ansatz (Prozess) wird currying genannt.

Implementierungsprozess

add (1) (2) tatsächlich eine Funktion ruft wiederum zwei normale (nicht curried Funktion), der erste Aufruf einen Parameter x, den Rückgabewert einer Funktion Typ, und der zweite Parameter y nennen diese Funktion Typ mit Wert.

Die erste im Wesentlichen in ein Verfahren entwickelt:

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

Dann ist diese Funktion, was bedeutet das? Empfangen eines x als Parameter und gibt eine anonyme Funktion, die Definition der anonymen Funktion ist: ein Int Argument y empfängt, wobei die Funktion Körper ist x + y. Nun rufen wir diese Methode.

val result = add(1) 

ein Ergebnis zurückgibt, sollte der Wert dieses Ergebnisses eine anonyme Funktion sein: (y: int) => 1 + y

Also, um Ergebnisse zu erzielen, setzen wir das Ergebnis zu nennen.

val sum = result(2)

Schließlich drucken Ergebnis ist 3.

Komplettes Beispiel

Hier ist ein komplettes Beispiel:

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

Die Umsetzung des obigen Codes ist die Ausgabe:

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

Scala-Funktion Scala - Funktion