In cosa val a: A = _
inizializza esattamente un valore? È un valore nullo digitato? Grazie.
In cosa val a: A = _
inizializza esattamente un valore? È un valore nullo digitato? Grazie.
Risposte:
val a: A = _
è un errore di compilazione. Per esempio:
scala> val a: String = _
<console>:1: error: unbound placeholder parameter
val a: String = _
^
Ciò che funziona è var a: A = _
(nota var
invece di val
). Come dice Chuck nella sua risposta, questo inizializza la variabile a un valore predefinito. Dalla specifica del linguaggio Scala:
0 se T è Int o uno dei suoi tipi di sottointervallo,
0L se T è Long,
0.0f se T è Float,
0.0d se T è Double,
false se T è Boolean,
() se T è Unit,
null per tutti gli altri tipi T.
val
?
val a: Int = _
probabilmente è un errore di compilazione perché sarebbe una cattiva pratica se funzionasse. Sarebbe solo un modo offuscato di scrivere val a: Int = 0
. L'impostazione di a var
su un valore predefinito ha senso poiché var
si prevede che a cambi, ma a val
è fisso, quindi la migliore pratica sarebbe assegnare un valore in modo esplicito.
Si inizializza a
al valore predefinito del tipo A
. Ad esempio, il valore predefinito di un Int è 0 e il valore predefinito di un tipo di riferimento è null.
NotNull
tratto? :-)
_
briscola NotNull
.