Scala:为什么不推荐使用remove而使用filterNot?
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'代替
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)
I don't understand why this is deprecated. Being immutable it should be clear that remove
would return a new list. In scaladoc you can find only:
Deprecated: use filterNot' instead
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是因为
remove
方法不一致 - 对于某些集合,它执行了可变就地删除,而对于不可变集合,它创建了一个新版本。具有就地(批量)修改的方法应该仅适用于可变集合。It's because the method
remove
wasn't coherent - for some collections it did a mutable in-place removal, whereas for immutable collections it created a new version. Methods with in-place (bulk) modifications should only be available for mutable collections.