我刚刚发现Java中有这样的迭代器。
Scala 是否有带有“set”和“remove”方法的迭代器来迭代(和修改)像数组这样的可变集合?
如果没有这样的迭代器,那么有充分的理由吗?
问问题
2526 次
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 回答