Ben düz bir liste içine çekmek istediğiniz, bana parçalarına kırılabilir bazı sonuçları döndürür bir jeneratör, olduğunu varsayalım: Kavramsal olaraktakeUntil? Parçalanmış giriş işleme. Nasıl?
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
}
, bu, tüm içerik olarak alınır dışında ben istediğim şey önündeyim ve tembel olmasını istiyorum. Böyle şey:
Stream.iterate(generator.first)(generator.next)
.takeWhile(_.hasNext)
.flatMap(_.items)
neredeyse çalışır, ancak son yığın atar.
.takeUntil
'a ihtiyacım var gibi görünüyor: takeWhile
gibi, ancak sonlandırmadan önce tüm zinciri gözden geçirin. Bunu nasıl deyimsel olarak yapıyorum?
İlgili? http://stackoverflow.com/questions/33602714/how-to-implement-takeuntil-of-a-list –
@ evan058 çok fazla yardımcı olmadığından, '.span' her şeyi ön plana çıkarır. : / – Dima