Dim*_*ima 7 collections scala stream
假设我有一个生成器,它将一些分解成块的结果返回给我,我想把它放到一个平面列表中:
 def pull(chunk: Chunk, result: Stream[Item] = Stream.empty): Stream[Item] = {
    val soFar = chunk.items ++ result
    if(chunk.hasNext) pull(generator.next(chunk), soFar) else soFar
 }
从概念上讲,这就是我想要的,除了它预先获取整个内容,我希望它是懒惰的.像这样的东西:
 Stream.iterate(generator.first)(generator.next)
   .takeWhile(_.hasNext)
   .flatMap(_.items)
几乎可以工作,但它丢弃了最后一块.
看起来我需要一个.takeUntil:喜欢takeWhile,但在终止之前通过整个链.我如何习惯性地这样做?
这就是我想出的......看起来有点恶心,但这是我能想到的最好的:
 Stream.iterate(generator.first) {
   case chunk if chunk.hasNext => generator.next
   case _ => null
 }.takeWhile(_ != null)
  .flatMap(_.items)
还有更好的想法吗?