À quoi val a: A = _
initialise exactement une valeur? Est-ce un null typé? Merci.
À quoi val a: A = _
initialise exactement une valeur? Est-ce un null typé? Merci.
Réponses:
val a: A = _
est une erreur de compilation. Par exemple:
scala> val a: String = _
<console>:1: error: unbound placeholder parameter
val a: String = _
^
Ce qui fonctionne est var a: A = _
(notez var
au lieu de val
). Comme Chuck le dit dans sa réponse, cela initialise la variable à une valeur par défaut. À partir de la spécification du langage Scala:
0 si T est Int ou l'un de ses types de sous-
plages , 0L si T est Long,
0.0f si T est Float,
0.0d si T est Double,
false si T est Boolean,
() si T est Unit,
nul pour tous les autres types T.
val
?
val a: Int = _
c'est probablement une erreur de compilation car ce serait une mauvaise pratique si cela fonctionnait. Ce ne serait qu'une manière obscure d'écrire val a: Int = 0
. Définir a var
sur une valeur par défaut a du sens car var
on s'attend à ce que a change, mais a val
est fixe, la meilleure pratique serait donc d'attribuer une valeur explicitement.
Il s'initialise a
à la valeur par défaut du type A
. Par exemple, la valeur par défaut d'un Int est 0 et la valeur par défaut d'un type de référence est null.
NotNull
trait? :-)
_
atout NotNull
.