Die kürzeste Abkürzungssyntax in Scala kann nur verwendet werden, wenn Sie eine var
oder val
deklarieren.
Aus der Scala-Referenz, Abschnitt 4.1
Eine Wertdeklaration val x 1 , ..., x n : T ist eine Abkürzung für die Sequenz von Wertdeklarationen val x 1 : T; ...; val x n : T. Eine Wertdefinition val p 1, ..., p n = e ist a Kurzschrift für die Reihenfolge des Wertes Definitionen val p <1>
; ...; val p n = e. Eine Wertdefinition val p 1, ..., p n: T = e ist eine Kurzform für die Folge von Wertdefinitionen val p1 : T = e; ...; valp : T = e.
Dies funktioniert nicht für die Neuzuweisung an var
. Der C / Java-Stil funktioniert aus den hier erläuterten Gründen nicht: Was ist die Motivation für Scala Assignment Evaluating to Unit
Unter Verwendung der Tatsache, dass die linke Seite einer Zuweisung syntaktisch ein Muster ist. (Siehe PatVarDef & gt; PatDef & gt; Pattern2 in SLS .)
a = b = 5
%Vor%x = y = z = neues Objekt
%Vor%Beachten Sie, dass der Ausdruck auf der rechten Seite nur einmal ausgewertet wird.
Leider funktioniert diese Syntax nicht für die re Zuweisung (also für x = y = value
müssen Sie x = value; y = x
noch tun).
Der "Rückgabetyp" des Ausdrucks (Zuweisung) b = c
ist Unit
, fürchte ich, was bedeutet, dass diese Syntax nicht gültig ist.
Peinlich, ich weiß. Das ist Scala, der dir ziemlich sagt, "tu das nicht". Betrachten Sie es als Scala-Version von Pythons Raumidentität zur Blockbegrenzung.
Sie können nicht schreiben
%Vor%da definiert das einen Ausdruck
Tags und Links scala expression variable-assignment