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

Bor*_* B. 10 ruby naming-conventions

我正在学习Ruby,并且我已经看到方法名称末尾的感叹号按照约定意味着该方法self以某种方式修改.为什么不接着Array#delete用感叹号结尾,像slice!呢,因为delete从删除的元素self?我错过了什么基本的东西?

sgt*_*oyd 15

引用Matz(Ruby的首席工程师):

爆炸(!)并不意味着"破坏性",也不缺乏意味着非破坏性.爆炸标志意味着"爆炸版本比非爆炸版本更危险;小心处理".

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