Итераторы для изменяемых наборов в Scala?

Я просто узнал, что существуют такие итераторы в Java.
Scala имеет итераторы с 'набором' и 'удаляет' методы для итерации (и изменение) изменяемые наборы как массив?
Если нет такого итератора, затем там серьезное основание для этого?

6
задан Community 23 May 2017 в 10:33
поделиться

2 ответа

Тема по той же теме на comp.lang.scala.user

1
ответ дан 17 December 2019 в 00:05
поделиться

Scala в настоящее время не имеет такого итератора.

Я подозреваю, что нет потому, что

  • Такие итераторы не являются общими (т.е. их можно использовать только с изменяемыми коллекциями), а потребляют пространство имен.

  • Потому что они могут быстро стать запутанными в сочетании с ленивыми операциями, такими как takeWhile (Всегда ли очевидно, что должен делать x.takeWhile(_<5).add(5)? С одной стороны, по порядку операций кажется, что сначала нужно взять, а потом добавить; но с другой стороны, take ленив, а add часто может быть реализован немедленно, так что наивно комбинировать их таким образом было бы опасно.)

  • Такие итераторы являются хорошей алгоритмической идеей только для очень специализированного набора коллекций (в основном только связанные списки и деревья; add и remove глупо использовать для массивов, а для множеств они не имеют особого смысла).

  • Когда возникает внутренний конфликт между общностью и скоростью, библиотека коллекций Scala обычно отдает предпочтение общности. Этот тип итератора заставляет вас думать о коллекциях более конкретно (т.е. более тесно привязан к базовой структуре данных). Вы можете представить себе библиотеку, которая делает другой выбор, но для максимально полезной (и при этом достаточно производительной) библиотеки философия библиотеки коллекций Scala, вероятно, является лучшим путем.

6
ответ дан 17 December 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: