This Scala tutorial ma następujący powiedzieć o deklarowania zmiennych bez wartości początkowej:Zadeklaruj zmienną bez wartości początkowej
Jeśli nie przypisać dowolną wartość początkową do zmiennej, to jest ważne, co następuje:
var myVar :Int; val myVal :String;
Ale gdy próbuję tego kodu w Scala REPL, otrzymuję te błędy:
scala> var myVar :Int;
<console>:10: error: only classes can have declared but undefined members
(Note that variables need to be initialized to be defined)
var myVar :Int;
^
scala> val myVal :String;
<console>:10: error: only classes can have declared but undefined members
val myVal :String;
Dlaczego tak jest? Czy samouczek dotyczący starszej wersji Scala?
Nie mogłem znaleźć konkretnej wersji Scali, dla której napisano samouczek, ale używam wersji 2.11.7 Scala na OpenJDK 64bit, Java 1.8.0_66.
Czy poradnik nieaktualne, albo jest problem z moim otoczeniu?
Czy można zadeklarować zmienną (var lub val) bez jej inicjowania?
Gdzie są te "domyślne" wartości pochodzących z? Czy to zależy od typu? Czy kompilator scala definiuje wartości domyślne dla podstawowych typów takich jak 'String'? – juanmirocks
Odpowiadając na moje własne pytanie, domyślam się, że wszystkie 'AnyRef' są ustawione domyślnie na' null', i że 'AnyVal' musi mieć jakoś zdefiniowaną wartość domyślną (nadal nie widzę, gdzie to się dzieje). – juanmirocks