有谁知道如何在 scala 中创建一个惰性迭代器?
例如,我想通过实例化每个元素进行迭代。通过后,我希望实例死亡/从内存中删除。
如果我像这样声明一个迭代器:
val xs = Iterator(
(0 to 10000).toArray,
(0 to 10).toArray,
(0 to 10000000000).toArray)
它在声明 xs 时创建数组。可以这样证明:
def f(name: String) = {
val x = (0 to 10000).toArray
println("f: " + name)
x
}
val xs = Iterator(f("1"),f("2"),f("3"))
打印:
scala> val xs = Iterator(f("1"),f("2"),f("3"))
f: 1
f: 2
f: 3
xs: Iterator[Array[Int]] = non-empty iterator
有人有想法么?
流不适合,因为元素保留在内存中。
注意:我以数组为例,但我希望它适用于任何类型。