Scala:已弃用的集合差异的替代方案
Scala: Alternative for deprecated set difference
我需要从母版中删除一些集 set
。以下代码显示了我打算使用的概念,但它正在生成弃用警告。 Scala 给出的建议没有用,因为我想重复更新主集。有人可以提出一个简单的替代方案吗?
scala> var setM = scala.collection.mutable.Set[Int](1, 2, 3, 4, 5)
setM: scala.collection.mutable.Set[Int] = HashSet(1, 2, 3, 4, 5)
scala> var setX = scala.collection.mutable.Set[Int](3, 4)
setX: scala.collection.mutable.Set[Int] = HashSet(3, 4)
scala> setM = setM -- setX
^
warning: method -- in trait SetOps is deprecated (since 2.13.0): Consider requiring an immutable Set mutated setM
scala> setM
res0: scala.collection.mutable.Set[Int] = HashSet(1, 2, 5)
警告很清楚:
method -- in trait SetOps is deprecated (since 2.13.0): Consider requiring an immutable Set
可见here。你可以用不可变集做同样的事情:
var setM = Set(1, 2, 3, 4, 5)
val setX = Set(3, 4)
setM = setM -- setX
println(setM)
代码 运行 在 Scastie。
话虽如此,在 Scala 中不推荐使用 vars。我会这样做:
val setM = Set(1, 2, 3, 4, 5)
val setX = Set(3, 4)
val updatedSetM = setM -- setX
println(updatedSetM)
结果为:
HashSet(5, 1, 2)
代码 运行 在 Scastie。
我需要从母版中删除一些集 set
。以下代码显示了我打算使用的概念,但它正在生成弃用警告。 Scala 给出的建议没有用,因为我想重复更新主集。有人可以提出一个简单的替代方案吗?
scala> var setM = scala.collection.mutable.Set[Int](1, 2, 3, 4, 5)
setM: scala.collection.mutable.Set[Int] = HashSet(1, 2, 3, 4, 5)
scala> var setX = scala.collection.mutable.Set[Int](3, 4)
setX: scala.collection.mutable.Set[Int] = HashSet(3, 4)
scala> setM = setM -- setX
^
warning: method -- in trait SetOps is deprecated (since 2.13.0): Consider requiring an immutable Set mutated setM
scala> setM
res0: scala.collection.mutable.Set[Int] = HashSet(1, 2, 5)
警告很清楚:
method -- in trait SetOps is deprecated (since 2.13.0): Consider requiring an immutable Set
可见here。你可以用不可变集做同样的事情:
var setM = Set(1, 2, 3, 4, 5)
val setX = Set(3, 4)
setM = setM -- setX
println(setM)
代码 运行 在 Scastie。
话虽如此,在 Scala 中不推荐使用 vars。我会这样做:
val setM = Set(1, 2, 3, 4, 5)
val setX = Set(3, 4)
val updatedSetM = setM -- setX
println(updatedSetM)
结果为:
HashSet(5, 1, 2)
代码 运行 在 Scastie。