Do czego dokładnie val a: A = _
inicjalizuje wartość? Czy to wpisana wartość null? Dzięki.
Do czego dokładnie val a: A = _
inicjalizuje wartość? Czy to wpisana wartość null? Dzięki.
Odpowiedzi:
val a: A = _
to błąd kompilacji. Na przykład:
scala> val a: String = _
<console>:1: error: unbound placeholder parameter
val a: String = _
^
Co działa to var a: A = _
(uwaga var
zamiast val
). Jak mówi Chuck w swojej odpowiedzi, inicjalizuje to zmienną do wartości domyślnej. Ze specyfikacji języka Scala:
0, jeśli T jest Int lub jednym z jego typów podzakresów,
0L jeśli T jest Long,
0,0f jeśli T jest Float,
0,0d jeśli T jest Double,
false, jeśli T jest Boolean,
() jeśli T jest Unit,
null dla wszystkich innych typów T.
val
?
val a: Int = _
prawdopodobnie jest to błąd kompilacji, ponieważ byłoby to zła praktyka, gdyby zadziałało. Byłby to po prostu zaciemniony sposób pisania val a: Int = 0
. Ustawienie var
wartości domyślnej ma sens, ponieważ var
oczekuje się, że a ulegnie zmianie, ale wartość a val
jest ustalona, więc najlepszą praktyką byłoby jawne przypisanie wartości.
Inicjuje a
się do domyślnej wartości typu A
. Na przykład domyślną wartością Int to 0, a domyślną wartością typu odwołania jest null.
NotNull
cechę? :-)
_
atuty NotNull
.