似乎Iterator和Stream都是懒惰的,并且允许您将元素保留在心脏的内容中.这两者有什么区别?
据我了解,Stream保留最近评估的元素.我想它不会保留所有评估的元素(这是不可行的),因此它可能使用一些内部"缓存".
这是对的吗?我可以控制此缓存的大小和策略吗?
可以使用流(懒惰列表)从一个数字(例如两个为了简单)中提取需求.Iteratees可用于处理来自单一来源的数据.
是否有类似Iteratee的功能概念来处理多个输入源?我可以想象一个Iteratee,它的状态信号来自它想要拉动的源.
在以下情况
trait T {
@tailrec
def consume[A](as: Stream[A]): Unit = {
if (as.isEmpty) ()
else consume(as.tail)
}
}
object O extends T
Run Code Online (Sandbox Code Playgroud)
主叫O.consume(Range(1, N).toStream)用N足够大的,程序将运行的存储器,或者至少将消耗O(N),而不是所需要的O(1).