Я читаю "Программирование в Scala 2ed".В разделе 24.4 отмечено, что Iterable содержит множество методов, которые невозможно эффективно написать без итератора.Таблица 24.2 содержит эти методы.Однако я не понимаю, почему некоторые из них не могут быть эффективно реализованы на итераторе.Например, рассмотрим zipWithIndex.
def zipWithIndex[A1 >: A, That](implicit bf: CanBuildFrom[Repr, (A1, Int), That]): That = {
val b = bf(repr)
var i = 0
for (x <- this) {
b += ((x, i))
i +=1
}
b.result
}
Почему бы не переместить это определение в traversable?Мне кажется, что код может быть точно таким же, и по эффективности ничего не изменится.