2013-07-28 2 views
4

Есть ли способ или способ получить каждый следующий элемент из потока?Следующий элемент из потока в Scala

Например, если есть поток похожий

def natural: Stream[Long] = { 
    def naturalHelper: Long => Stream[Long] = { 
    n => n #:: naturalHelper(n+1) 
    } 
    naturalHelper(1) 
} 

val s = natural 

Я ищу что-то вроде s.next(), возвращаясь 2 по первому зову, s.next() = 3 на следующий вызов, и так сверху ... без использования var.

ответ

9

Сделать итератор

val s = natural.iterator 
s.next() 
s.next() 
+1

Право на. И если это то, что вы планируете делать с Stream, вы, вероятно, не должны использовать Stream вообще, так как Streams сохраняет результаты и в конечном итоге съедает всю вашу память. – AmigoNico

+0

Я согласен с @AmigoNico, любой метод со счетчиком внутри сделает эту работу. – mulya

Смежные вопросы