Je regarde la classe mutable Set
et voir union
, intersect
, diff
, etc. Toutes ces opérations ensemble créent un nouveau Set
. J'étais curieux de savoir s'il y avait un moyen de mettre à jour le Set
plutôt que d'en créer un nouveau. Sinon, je dois passer de val
à var
ou suivre des étapes supplémentaires.Scala: définir les opérations qui mettent à jour la collection?
Dans le cas où je ne suis pas clair, considérons la classe HashSet
de .NET. Il a IntersectWith
, ExceptWith
et UnionWith
qui modifient la collection. Alors que les méthodes d'extension LINQ Intersect
, Except
et Union
créer de nouvelles collections. J'espère trouver quelque chose d'équivalent aux variantes "Avec".
est ici une approche inefficace qui reconstitue la collection à partir de zéro:
val temp = original.diff(other)
original.clear()
original ++= temp
De toute évidence, il serait plus efficace de le faire:
for (value <- other if original.contains(value)) {
original.remove(value)
}
Voulez-vous dire passer 'var' à' val' peut-être? :) – Alec
Non, 'val' à' var'. Je veux conserver la même référence à la même collection. Je veux * muter * cette collection plutôt que de remplacer la référence à une nouvelle collection. –
Mon mauvais. Tout à fait raison. Un 'val' à un ensemble mutable. Erreur de débutant. – Alec