Wofür genau wird val a: A = _
ein Wert initialisiert? Ist das eine getippte Null? Vielen Dank.
Wofür genau wird val a: A = _
ein Wert initialisiert? Ist das eine getippte Null? Vielen Dank.
Antworten:
val a: A = _
ist ein Kompilierungsfehler. Beispielsweise:
scala> val a: String = _
<console>:1: error: unbound placeholder parameter
val a: String = _
^
Was funktioniert, ist var a: A = _
(Notiz var
statt val
). Wie Chuck in seiner Antwort sagt, initialisiert dies die Variable auf einen Standardwert. Aus der Scala-Sprachspezifikation:
0 wenn T Int oder einer seiner
Unterbereichstypen ist , 0L wenn T Long ist,
0.0f wenn T Float ist,
0.0d wenn T Double ist,
false wenn T Boolean ist,
() wenn T Unit ist,
null für alle anderen Typen T.
val
?
val a: Int = _
wahrscheinlich ein Kompilierungsfehler, da es eine schlechte Praxis wäre, wenn es funktionieren würde. Es wäre nur eine verschleierte Schreibweise val a: Int = 0
. Das Festlegen von a var
auf einen Standardwert ist sinnvoll, da var
erwartet wird, dass sich a ändert, a val
jedoch festgelegt ist. Daher empfiehlt es sich, einen Wert explizit zuzuweisen.
Es wird a
auf den Standardwert des Typs initialisiert A
. Beispielsweise ist der Standardwert eines Int 0 und der Standardwert eines Referenztyps null.
NotNull
Merkmal mischt ? :-)
_
Trumpf zu sein NotNull
.