【发布时间】:2011-02-17 16:29:01
【问题描述】:
我just发现Java中有这样的迭代器。
Scala 是否有带有 'set' 和 'remove' 方法的迭代器
迭代(和修改)像数组这样的可变集合?
如果没有这样的迭代器,那有充分的理由吗?
【问题讨论】:
-
您应该在此处复制(或解释)您在邮件列表中获得的答案(以供后代使用)。
-
@Randall。好的,我提供了链接以最大限度地提高实用性。
我just发现Java中有这样的迭代器。
Scala 是否有带有 'set' 和 'remove' 方法的迭代器
迭代(和修改)像数组这样的可变集合?
如果没有这样的迭代器,那有充分的理由吗?
【问题讨论】:
Scala 目前没有这样的迭代器。
我怀疑不是因为
此类迭代器不是通用的(即它们仅可用于可变集合),而是使用命名空间。
因为与 takeWhile 之类的惰性操作一起考虑它们会很快变得令人困惑(x.takeWhile(_<5).add(5) 应该做什么总是显而易见的吗?一方面,操作的顺序似乎你应该采取首先,然后添加;但另一方面,take 是惰性的,而 add 通常可以立即实现,因此以这种方式将它们组合起来会很危险。)
这样的迭代器在算法上只是一个好主意,它具有一组非常专业的集合(基本上只有链表和树;无论如何在数组上使用 add 和 remove 是愚蠢的,而且在集合上没有多大意义)。
当通用性和速度之间出现内在冲突时,Scala 集合库通常倾向于通用性。这种迭代器让您以更特殊的方式思考集合(即与底层数据结构更紧密地联系在一起)。你可以想象一个库做出了不同的选择,但是对于一个最大的有用(并且仍然非常高效)的库,Scala 集合库的理念可能是更好的选择。
【讨论】:
comp.lang.scala.user上同一主题的帖子
【讨论】: