Scala:为什么不推荐使用remove而使用filterNot?

发布于 2024-11-16 13:24:50 字数 502 浏览 3 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我恋#小黄人 2024-11-23 13:24:50

这是因为 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文