2016-08-04 30 views
2

Ich versuche, teilweise angewandte Funktion zu verstehen, in scalateilweise angewandten Funktion in scala

scala> val a=sum _ 
a: (Int, Int, Int) => Int = <function3> 

scala> a(1,2,3) 
res7: Int = 6 

Ich bin nur geben diese val a=sum _

Ich möchte verstehen, wie scala interpretiert es drei Argumente nehmen

a: (Int, Int, Int) => Int = <function3> 

Antwort

1

Sie haben gerade die erlebt, die eine method in eine function konvertiert.

Ihre Methode ist sum, die Sie nicht demonstrieren, sondern basiert auf der Funktion Version sein muss:

def sum(a:Int,b:Int,c:Int):Int = a + b + c 

Der Unterstrich Sie am Ende hinzufügen, wird Ihre Methode in eine Funktion als beschreibender Art Signatur Umwandlung von das Ergebnis zeigt: (Int, Int, Int) => Int

So können Sie Ihre Methode in einen Funktionswert konvertieren, die auf eine Variable und übergaben um in der Anwendungslogik Fördern eine Verhaltensänderung zu Ihren Daten zugeordnet werden können (additio n in Ihrer Instanz).

+0

Was ist der Unterschied zwischen Methode und Funktion in diesem Anwendungsfall? –

+1

Weitere Informationen dazu, warum und was dies im Methoden-/Funktionskontext erreicht. – dimitrisli

+1

@AvihooMamka Der Unterschied zwischen Scala-Methoden und -Funktionen besteht hauptsächlich darin, wie sie sich in die jeweilige JVM-Welt übersetzen lassen. Scala-Methoden sind dieselben wie Java-Methoden und sie existieren entweder als Mitglieder einer Instanz oder im statischen Kontext. Scala-Funktionen sind selbst Instanzen der 'Function1',' Function2' oder 'FunctionN' Klasse, abhängig von der Anzahl der Argumente. –