给定一个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)
1()
开始有意义。 :) - Travis Brown