Dlaczego nie można zdefiniować zmiennej rekursywnie w bloku kodu?Dlaczego nie można zdefiniować zmiennej rekursywnie w bloku kodu?
scala> {
| val test: Stream[Int] = 1 #:: test
| }
<console>:9: error: forward reference extends over definition of value test
val test: Stream[Int] = 1 #:: test
^
scala> val test: Stream[Int] = 1 #:: test
test: Stream[Int] = Stream(1, ?)
lazy
kluczowe rozwiązuje ten problem, ale nie mogę zrozumieć, dlaczego to działa bez bloku kodu, ale generuje błąd kompilacji w bloku kodu.
Ostatni przykład nie jest kompilowany. (Co oczywiście dotyczy całego zagadnienia). – Debilski
@Debilski: Masz rację, z 2.10 już się nie kompiluje. Użyłem 2.9.0, aby skompilować to, jak wspomniano w raporcie o błędzie. – sschaef
Używałem 2.9.1-1. Więc musiało zostać zmienione pomiędzy. – Debilski