迭代器的等效项。对于一个可迭代的项,是否连续?

问题描述 投票:0回答:2

我需要产生一个java.lang.Iterable[T],其中T的供应需要长时间运行。另外,在提供T之后,将其包装,并进行进一步的计算以准备下一次迭代。

起初我以为我可以用Iterator.continually来做到这一点。但是,在结果上调用toIterable实际上会创建一个Stream[T]-问题是急切地评估了头,这是我不希望的。

我怎么可以:

  1. 通过提供功能创建Iterable[T]
  2. 不使用Iterator[T]Iterable[T]转换为Stream
scala stream lazy-evaluation
2个回答
1
投票

在Scala 2.13中,您可以使用LazyList

LazyList

LazyList.continually(1) 不同,Stream的头脑也很懒。


0
投票

因为LazyList是一个非常简单的API,所以从java.lang.Iterable到它很简单。

scala.collection.Iterator
© www.soinside.com 2019 - 2024. All rights reserved.