【发布时间】:2015-05-29 22:33:47
【问题描述】:
给定一个lazy val:
scala> lazy val y = {println("Y!"); 200}
y: Int = <lazy>
我尝试将y 放入Stream - 以了解它是否会被急切或懒惰地评估。
scala> Stream(100, y)
Y!
res4: scala.collection.immutable.Stream[Int] = Stream(100, ?)
显然它已被热切地评估。
除了以下内容,我如何创建一个懒惰地评估其成员的Stream?
scala> Stream[() => Int](() => 100, () => 200)
res18: scala.collection.immutable.Stream[() => Int] = Stream(<function0>, ?)
scala> res18.map(_())
res19: scala.collection.immutable.Stream[Int] = Stream(100, ?)
scala> res19.last
res20: Int = 200
scala> res19
res21: scala.collection.immutable.Stream[Int] = Stream(100, 200)
【问题讨论】: