Оба нижеследующих предназначены для создания потока целых чисел:
val s: Stream[Int] = 1 #:: s.map(_ + 1)
def makeStream = {
val s: Stream[Int] = 1 #:: s.map(_ + 1)
s
}
Первое - нормально; однако метод makeStream
не компилируется:
error: forward reference extends over definition of value s
val s: Stream[Int] = 1 #:: s.map(_ + 1)
^
Он компилируется, только если мы сделаем s
lazy val
. Почему это должно быть lazy val
в методе, но не вне его?