【问题标题】:Iterators for mutable collections in Scala?Scala中可变集合的迭代器?
【发布时间】:2011-02-17 16:29:01
【问题描述】:

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

【问题讨论】:

  • 您应该在此处复制(或解释)您在邮件列表中获得的答案(以供后代使用)。
  • @Randall。好的,我提供了链接以最大限度地提高实用性。

标签: scala iterator scala-2.8


【解决方案1】:

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

我怀疑不是因为

  • 此类迭代器不是通用的(即它们仅可用于可变集合),而是使用命名空间。

  • 因为与 takeWhile 之类的惰性操作一起考虑它们会很快变得令人困惑(x.takeWhile(_<5).add(5) 应该做什么总是显而易见的吗?一方面,操作的顺序似乎你应该采取首先,然后添加;但另一方面,take 是惰性的,而 add 通常可以立即实现,因此以这种方式将它们组合起来会很危险。)

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

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

【讨论】:

  • 非常好的论据,谢谢。我认为 takeWhile 没有危险。这就像 x = x+1。也许某些集合应该提供混合了多个特征的专门迭代器?或者我应该像这里一样返回某种参考:stackoverflow.com/questions/2799128/…
【解决方案2】:

comp.lang.scala.user上同一主题的帖子

【讨论】:

    猜你喜欢
    • 2010-10-04
    • 1970-01-01
    • 2023-03-14
    • 2019-02-14
    • 2018-03-17
    • 2012-01-07
    • 2018-11-15
    • 1970-01-01
    • 2012-04-02
    相关资源
    最近更新 更多