5
假設我有一臺發電機,它返回我一些成績分成塊,我想拉成一個平坦的列表:takeUntil?處理分塊輸入。怎麼樣?
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
,但在終止前通過整個鏈。我如何慣用這樣做?
相關? http://stackoverflow.com/questions/33602714/how-to-implement-takeuntil-of-a-list –
@ evan058這並沒有多大幫助,因爲'.span'預先實現了整個事物。 :/ – Dima