Scala:设置更新集合的操作?

时间:2016-07-22 17:39:50

标签: scala collections set mutable

我正在查看可变的Set课程,并看到unionintersectdiff等。所有这些设置操作都会创建一个新的Set 。我很好奇是否有办法更新Set而不是创建新的val。否则,我必须从var切换到HashSet,否则我必须跟进其他步骤。

如果我不清楚,请考虑.NET的IntersectWith课程。它有ExceptWithUnionWithIntersect来修改集合。 LINQ扩展方法ExceptUnionval temp = original.diff(other) original.clear() original ++= temp 创建新集合。我希望找到与" With"相同的东西。变体。

这是一种从头开始重建集合的低效方法:

for (value <- other if original.contains(value)) {
    original.remove(value)
}

显然,这样做会更有效:

eachPost: (post) ->
  return (
    <tr>
      <td>#{post.tags.join("\r\n")}</td>
    </tr>
  )

render: () ->
  return (
    <table>
      <tbody>
        <tr>
          <th>Hashtags</th>
        </tr>
        {_.chain(@state.posts.data).map(@eachPost).value()}
      </tbody>
    </table>
  )

1 个答案:

答案 0 :(得分:2)

请参阅:http://docs.scala-lang.org/overviews/collections/sets.html#operations-in-class-mutableset

例如:

  

添加:xs + = x添加元素x以将xs设置为副作用和   返回xs本身。

所以只需忽略返回的值。该集应该就地更新。