Если у вас есть Iterator[Iterator[A]]
, вы можете использовать flatten
для получения Iterator[A]
, который объединяет все вложенные итераторы:
scala> Iterator(Iterator(1, 2), Iterator(3, 4)).flatten.toList
res0: List[Int] = List(1, 2, 3, 4)
В сочетании с одним из заводских методов в сопутствующем объекте Iterator вы, вероятно, можете превратить его в однострочник:
Iterator.range(1, pageCount).map(i: Int => fetchPage(i)).flatten
Возможно, это будет немного сложнее, если вы можете получить количество страниц только путем извлечения страницы ... что-то вроде:
val (firstPage, pageCount) = getFirstPageWithCount()
firstPage ++ (Iterator.range(2, pageCount).map(fetchPage).flatten)