2017-02-05 2 views
0

Ich betrachtete ActorLogging here und kam in dieser Syntax:Was bedeutet scala enclosure?

def receive = LoggingReceive { 
    case x => ... 
} 

Was bedeutet diese Syntax SomeName { } bedeuten? Ich weiß, dass in scala {} einen Block von Anweisungen erstellen und die letzte Zeile die Variable zugewiesen wird. Die Kommentare erklären es als:

Wrap eine Teilfunktion in einem Gehäuse Protokollierung Erhalten

Gibt es eine technische Bezeichnung für sie, so dass ich seine Verwendung mehr lernen kann? Hinweis: Ich weiß, was eine Teilfunktion ist. Aus den Kommentaren und Antworten habe ich verstanden, dass LoggingReceive eine Teilfunktion und die Syntax von apply zurückgibt.

+0

Mögliches Duplikat von [Verwenden von Teilfunktionen in Scala - wie funktioniert es?] (Http://stackoverflow.com/questions/8650549/using-partial-functions-in-scala-how-does-it-work) – zhelezoglo

+0

Lesen Sie auch dies: [Was ist der formale Unterschied in Scala zwischen geschweiften Klammern und Klammern, und wann sollten sie verwendet werden?] (Http://stackoverflow.com/questions/4386127/what-is-the-formal-difference-in -scala-between-braces-and-clampes-and-when) – zhelezoglo

Antwort

-1

In akka muss die receive Methode Receive als Ergebnistyp haben. Also hier sind sie mit einem Objekt LoggingReceive, die eine apply Methode wie folgt definiert ist:

def apply(r: Receive)(implicit context: ActorContext): Receive = withLabel(null)(r) 

In Scala haben wir eine Syntax Zucker Konstrukt so statt Aufruf:

LoggingReceive.apply(...) 

Sie können einfach schreiben:

LoggingReceive(...) 

Es ist eine andere Sache - in Scala wir {...} Klammern statt (...) Klammern verwenden können, so dass die

LoggingReceive{...} 

So am Ende sind sie Einwickeln nur einfach die receive Methode mit dem apply Verfahren von LoggingReceive, die die withLabel() Methode aufruft: obiger Ausdruck kann als sein schreiben.

+0

Dies erklärt eigentlich nicht die Funktion, nach der das ursprüngliche Poster gesucht hat. Bitte lesen Sie http://stackoverflow.com/questions/4386127/what-is-the-formal-difference-in-scala-between-brae-and-parentheses-and-when für die eigentliche Erklärung. Siehe den Abschnitt "Funktion/Teilfunktionsliterale mit Groß-/Kleinschreibung" der Antwort. – jrudolph