我试图理解为什么以下使用 Scala Streams 的代码不起作用:
def main(args: Array[String]): Unit = {
lazy val y : SimNumericStream = y.shift
y.scalstream.take(10).print
}
class SimNumericStream( ss : Stream[Double] ) {
lazy val scalstream = ss
lazy val shift = new SimNumericStream( 0 #:: scalstream )
}
并替换
lazy val y : SimNumericStream = y.shift
经过
lazy val y : SimNumericStream = new SimNumericStream( 0 #:: y.scalstream )
工作得很好。
我正在寻找一种解决方案,当流是自引用的时,它允许我在函数内部封装 Streams 上的操作,而不会破坏惰性求值。