【发布时间】:2012-04-25 13:18:01
【问题描述】:
我试图了解为什么以下使用 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 进行操作,而不会在流是自引用的时破坏惰性求值。
【问题讨论】:
标签: scala stream lazy-evaluation