6

刚刚发现Java中有这样的迭代器。
Scala 是否有带有“set”和“remove”方法的迭代器来迭代(和修改)像数组这样的可变集合?
如果没有这样的迭代器,那么有充分的理由吗?

4

2 回答 2

6

Scala 目前没有这样的迭代器。

我怀疑不是因为

  • 这样的迭代器不是通用的(即它们只能用于可变集合),而是使用命名空间。

  • 因为它们与惰性操作takeWhile(例如应该做什么总是很明显x.takeWhile(_<5).add(5)吗?一方面,操作的顺序似乎你应该先取,然后添加;但另一方面,take是lazy whileadd通常可以立即实现,因此以这种方式将它们组合起来会很危险。)

  • 这样的迭代器在算法上只是一个好主意,它具有一组非常专业的集合(基本上只有链表和树;无论如何在数组上使用 add 和 remove 是愚蠢的,而且它在集合上没有多大意义)。

  • 当通用性和速度之间出现内在冲突时,Scala 集合库通常倾向于通用性。这种迭代器让您以更特殊的方式考虑集合(即与底层数据结构更紧密地联系在一起)。你可以想象一个库做出了不同的选择,但是对于一个最大的有用(并且仍然非常高效)的库,Scala 集合库哲学可能是更好的选择。

于 2010-05-10T19:40:50.900 回答
1

在comp.lang.scala.user上讨论同一主题

于 2010-05-11T00:29:24.693 回答