Tại sao tôi không thể định nghĩa một biến đệ quy trong một khối mã?Tại sao tôi không thể định nghĩa một biến đệ quy trong một khối mã?
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
từ khóa giải quyết vấn đề này, nhưng tôi không thể hiểu tại sao nó hoạt động mà không có một khối mã nhưng ném một lỗi biên dịch trong một khối mã.
Ví dụ cuối cùng không biên dịch. (Tất nhiên là toàn bộ vấn đề được đề cập đến.) – Debilski
@Debilski: Bạn nói đúng, với 2,10 nó không biên dịch nữa. Tôi đã sử dụng 2.9.0 để có được điều này để biên dịch như đã đề cập trong báo cáo lỗi. – sschaef
Tôi đã sử dụng 2.9.1-1. Vì vậy, nó phải được thay đổi ở giữa. – Debilski