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 varinvece 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 varsu un valore predefinito ha senso poiché varsi prevede che a cambi, ma a valè fisso, quindi la migliore pratica sarebbe assegnare un valore in modo esplicito.
Si inizializza aal valore predefinito del tipo A. Ad esempio, il valore predefinito di un Int è 0 e il valore predefinito di un tipo di riferimento è null.
NotNulltratto? :-)
_briscola NotNull.