爲什麼我不能在代碼塊中遞歸地定義一個變量?爲什麼我不能在代碼塊中遞歸地定義一個變量?
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
關鍵字解決了這個問題,但我不明白爲什麼它的工作原理沒有一個代碼塊,但在一個代碼塊拋出一個編譯錯誤。
最後一個例子不能編譯。 (當然這是整個問題。) – Debilski 2012-03-31 11:52:54
@Debilski:你說得對,用2.10就不能編譯了。我使用2.9.0來獲得這個編譯錯誤報告中提到的。 – sschaef 2012-03-31 12:12:50
我正在使用2.9.1-1。所以它必須在兩者之間改變。 – Debilski 2012-03-31 13:12:00