我正在查看可变的Set
课程,并看到union
,intersect
,diff
等。所有这些设置操作都会创建一个新的Set
。我很好奇是否有办法更新Set
而不是创建新的val
。否则,我必须从var
切换到HashSet
,否则我必须跟进其他步骤。
如果我不清楚,请考虑.NET的IntersectWith
课程。它有ExceptWith
,UnionWith
和Intersect
来修改集合。 LINQ扩展方法Except
,Union
和val 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>
)
答案 0 :(得分:2)
请参阅:http://docs.scala-lang.org/overviews/collections/sets.html#operations-in-class-mutableset
例如:
添加:xs + = x添加元素x以将xs设置为副作用和 返回xs本身。
所以只需忽略返回的值。该集应该就地更新。