Scala 编译问题 "forward reference extends over definition of value"
Scala compilation issue "forward reference extends over definition of value"
下面的代码片段只有在方法级实现时才会出现编译错误,在main中定义时不会出现错误。有什么不同 ?使用的 Scala 版本是 2.13.5.
class FibonacciGenerator {
def generate(total: Int): List[Int] = {
val fibSeries: LazyList[Int] = LazyList.cons(1, LazyList.cons(1, fibSeries.zip(fibSeries.tail).map { t => t._1 + t._2 }))
fibSeries.take(total).toList
}
}
同样的实现不会失败。
object Misc extends App {
val x: LazyList[Int] = LazyList.cons(1, LazyList.cons(1, x.zip(x.tail).map{t => t._1 + t._2}))
println(x)
println(x.take(10).toList)
不同之处在于,在后一种情况下,您使用的是创建的对象 lazily
An object... is created lazily when it is referenced, like a lazy val.
在第一种情况下,如果您声明 lazy val fibSeries
.
它应该可以工作
下面的代码片段只有在方法级实现时才会出现编译错误,在main中定义时不会出现错误。有什么不同 ?使用的 Scala 版本是 2.13.5.
class FibonacciGenerator {
def generate(total: Int): List[Int] = {
val fibSeries: LazyList[Int] = LazyList.cons(1, LazyList.cons(1, fibSeries.zip(fibSeries.tail).map { t => t._1 + t._2 }))
fibSeries.take(total).toList
}
}
同样的实现不会失败。
object Misc extends App {
val x: LazyList[Int] = LazyList.cons(1, LazyList.cons(1, x.zip(x.tail).map{t => t._1 + t._2}))
println(x)
println(x.take(10).toList)
不同之处在于,在后一种情况下,您使用的是创建的对象 lazily
An object... is created lazily when it is referenced, like a lazy val.
在第一种情况下,如果您声明 lazy val fibSeries
.