弱引用中的弱点。基本上,我需要一系列数字,其中一些数字可以在不再需要时分配。
答案 0 :(得分:5)
scalaz.EphemeralStream就是你想要的。
答案 1 :(得分:0)
视图为您提供了一个惰性集合,其中每个值都是根据需要计算的。
答案 2 :(得分:0)
您可以做的一件事是创建Iterable
而不是Stream
。您的Iterable
需要提供iterator
方法,该方法返回使用hasNext
和next
方法的迭代器。
当您遍历Iterable
时,将调用hasNext
和next
以根据需要生成元素,但它们不会存储在任何位置(例如Stream
确实)。
简单示例:
class Numbers extends Iterable[Int] {
def iterator = new Iterator[Int] {
private var num = -1
def hasNext = num < 99
def next = { num += 1; num }
}
}