변경 가능한 Set
클래스를보고 있는데 union
, intersect
, diff
등을 참조하십시오. 이러한 모든 집합 연산은 새로운 Set
을 생성합니다. 새로운 것을 만드는 대신 Set
을 업데이트 할 방법이 있는지 궁금했습니다. 그렇지 않으면 val
에서 var
으로 전환해야합니다. 추가 단계를 수행해야합니다.스칼라 : 컬렉션을 업데이트하는 작업을 설정 하시겠습니까?
명확하지 않은 경우 .NET의 HashSet
클래스를 고려하십시오. 컬렉션을 수정하는 IntersectWith
, ExceptWith
및 UnionWith
이 있습니다. LINQ 확장 메서드 Intersect
, Except
및 Union
이 새 컬렉션을 만드는 반면. "With"변종과 동일한 것을 찾고 싶습니다. 이 작업을 수행하는 것이 더 효율적 것, 분명히
val temp = original.diff(other)
original.clear()
original ++= temp
:
여기 처음부터 컬렉션을 재 구축 비효율적 인 접근 방식
for (value <- other if original.contains(value)) {
original.remove(value)
}
'var'을'val'로 바꾸는 것은 어쩌면 가능합니까? :) – Alec
아니,'val'을'var'. 동일한 컬렉션에 동일한 참조를 유지하려고합니다. 새 컬렉션에 대한 참조를 바꾸지 않고 해당 컬렉션을 변경하려고합니다. –
제 잘못입니다. 맞아. 변경 가능한 집합에 대한 'val'. 신기한 실수. – Alec