收集高级操作弃用(列表:列表[A] - a:A)

时间:2012-02-23 00:47:38

标签: scala scala-collections

为什么我们有这个算子方法

      @deprecated("use `filterNot (_ == x)` instead", "2.8.0")
  def - [B >: A](x: B): List[B] 
//i.e. List(1,23,3,4,5) - 23

是否已弃用列表,但不适用于集合?

Set(1,23,3,4) - 23

如果因为List在性能方面不是很适合这个操作,但是我们还是应该避免使用长度方法。 集合运算符在scala的未来版本中将如何显示?

1 个答案:

答案 0 :(得分:7)

List方法的问题在于它从未做过您期望它做的事情。天真的,我希望

1,2,3,1,2,3 - 1,2,3,1 == 2,3

因此

1,2,3,1,2,3 - 1 == 2,3,1,2,3

除了那不是你得到的;相反,你得到了

1,2,3,1,2,3 - 1 == 2,3,2,3

(这正是filterNot给出的,你应该期待的。)

由于Set的元素是唯一的,因此两种方法之间没有区别。