Scala:为什么删除被弃用而不支持filterNot?

时间:2011-06-21 09:35:09

标签: list scala immutability deprecated

scala> List(1, 2, 3) remove (_ < 2)
<console>:8: warning: method remove in class List is deprecated: use `filterNot'
 instead
       List(1, 2, 3) remove (_ < 2)
                     ^
res0: List[Int] = List(2, 3)

我不明白为什么这会被弃用。不可变,应该很清楚remove会返回一个新列表。在scaladoc中,您只能找到:

  

不推荐使用:使用filterNot'代替

1 个答案:

答案 0 :(得分:14)

这是因为方法remove不一致 - 对于某些集合,它执行了可变的就地删除,而对于不可变集合,它创建了一个新版本。具有就地(批量)修改的方法应仅适用于可变集合。