scala - Scala 编译问题“前向引用扩展了值的定义”
问题描述
以下代码片段仅在方法级别实现时才会发生编译错误,并且在 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)
解决方案
推荐阅读
- reactjs - 使用 useRef 和 useEffect 更新值
- python - 将文件拆分为小块并进行处理
- python - 是否可以使用 GridSearchCV 同时计算准确率和 ROC-AUC 分数?
- actionscript-3 - 钓鱼游戏代码 ActionScript 2.0 到 ActionScript 3.0
- c - 访问不同路径中存在的不同 .c 文件中的全局变量值
- javascript - How can I add a space to a string after every specified length of chars and pad the remaining characters with one space?
- python - 水平连接 DataFrame
- css - 线性渐变背景问题
- r - 将列表转换为具有特定列名的数据框
- node.js - Require() 未在电子中定义 - 节点 js