У меня есть код (sentences
is iterator
здесь):
def count() = {
var count = 0
for(sentence <- sentences.toStream) count += sentence.words.size
count
}
и тест:
// first
val wordCount1 = wordCounter.count()
wordCount1 must_== 10
// second time - should be same result
val wordCount2 = wordCounter.count()
wordCount2 must_== 10 // fails: result is 0
Последний тест не выполнен:
'0' is not equal to '10'
Expected :10
Actual :0
Но так как я использую sentences.toStream
в приведенном выше коде, я полагаю, что в нем есть stream
(я могу его повторно использовать, теоретически).
Q: почему это не удается?
EDIT:
Я надеялся, что toStream
поможет. Как описано здесь: (... "Вы можете пройти один и тот же stream
несколько раз"...). Как будто я никогда не касаюсь итератора, у меня есть дело с потоком.
Но я получил.. sentences.toStream
использовал UP sentence-iterator
, поэтому я больше не могу его использовать. Я просто ожидал, когда toStream
на iterator
выполняет логику, как получение stream-'link 'для итератора, не касаясь самого итератора. Ok..