Ниже перечислены оба способа создания потока целых чисел:
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
a lazy val
. Почему в методе должен быть lazy val
, но не снаружи?