Я просто узнал, что существуют такие итераторы в Java.
Scala имеет итераторы с 'набором' и 'удаляет' методы для итерации (и изменение) изменяемые наборы как массив?
Если нет такого итератора, затем там серьезное основание для этого?
Scala в настоящее время не имеет такого итератора.
Я подозреваю, что нет потому, что
Такие итераторы не являются общими (т.е. их можно использовать только с изменяемыми коллекциями), а потребляют пространство имен.
Потому что они могут быстро стать запутанными в сочетании с ленивыми операциями, такими как takeWhile
(Всегда ли очевидно, что должен делать x.takeWhile(_<5).add(5)
? С одной стороны, по порядку операций кажется, что сначала нужно взять, а потом добавить; но с другой стороны, take
ленив, а add
часто может быть реализован немедленно, так что наивно комбинировать их таким образом было бы опасно.)
Такие итераторы являются хорошей алгоритмической идеей только для очень специализированного набора коллекций (в основном только связанные списки и деревья; add и remove глупо использовать для массивов, а для множеств они не имеют особого смысла).
Когда возникает внутренний конфликт между общностью и скоростью, библиотека коллекций Scala обычно отдает предпочтение общности. Этот тип итератора заставляет вас думать о коллекциях более конкретно (т.е. более тесно привязан к базовой структуре данных). Вы можете представить себе библиотеку, которая делает другой выбор, но для максимально полезной (и при этом достаточно производительной) библиотеки философия библиотеки коллекций Scala, вероятно, является лучшим путем.