потребляют элементы из scala Iterator

Я не понимаю, как ведет себя метод возьмите в trait Iterator . Кажется, что он не потребляет предметы. Вот пример:

scala> Iterator(1,2,3)
res0: Iterator[Int] = non-empty iterator

scala> res0 take 2 toArray
res1: Array[Int] = Array(1, 2)

scala> res0.next
res2: Int = 1

Очевидно, шаг 2 потребляет два элемента, но на шаге 3 итератор по-прежнему остается первым элементом. Глядя на реализацию, я не вижу никакого копирования или буферизации, только новый Итератор , который делегирует основному. Как такое могло быть? Как я могу реально потреблять n предметов?

12
задан jglatre 1 October 2011 в 10:25
поделиться