关于ruby:命名约定:为什么Array#delete最后没有感叹号?

Naming convention: Why Array#delete has no exclamation mark at the end?

我正在学习Ruby,我已经看到了一个感叹号在一个方法名的末尾,通过约定,意味着该方法在某种程度上修改了self。既然deleteself中删除了一个元素,那么为什么Array#delete不以感叹号结尾,就像slice!那样?我是否遗漏了一些基本的东西?


引用Matz(Ruby的总工程师):

The bang (!) does not mean"destructive" nor lack of it mean non
destructive either. The bang sign means"the bang version is more
dangerous than its non bang counterpart; handle with care".

由于Array#delete没有危险性较小的对应词,因此不需要感叹号。


"砰"的方法并不意味着它修改了接收器。它表示一个方法是现有方法的更危险版本。请参见DavidA.Black对差异的描述,以及对更改Ruby2.0请求的响应。

这是一个很常见的误解。请注意这里投票结果非常错误的答案。