我有一个延迟计算的对象序列,其中延迟计算仅取决于索引(而不是前面的项目)和一些常量参数(p:Bar
如下)。我目前正在使用Stream,但是计算stream.init
通常是浪费的。
但是,我真的很喜欢 usingStream[Foo] = ...
让我摆脱了缓存的实现,并且声明语法非常简单,同时仍然提供所有糖(如stream(n)
获取元素n
)。再说一次,我可能只是使用了错误的声明:
class FooSrcCache(p:Bar) {
val src : Stream[FooSrc] = {
def error() : FooSrc = FooSrc(0,p)
def loop(i: Int): Stream[FooSrc] = {
FooSrc(i,p) #:: loop(i + 1)
}
error() #:: loop(1)
}
def apply(max: Int) = src(max)
}
是否有一个可比较的Stream
Scala 基类,它是索引的而不是线性的?