【发布时间】:2012-03-18 08:32:37
【问题描述】:
我正在学习 Ruby,并且我看到按照惯例,方法名称末尾的感叹号意味着该方法以某种方式修改了 self。为什么Array#delete 不像slice! 那样以感叹号结尾,因为delete 从self 中删除了一个元素?我错过了一些基本的东西吗?
【问题讨论】:
-
我的猜测是因为
#delete只能删除,所以不需要标记它。#upper_case之类的东西既可以分配给新创建的对象,也可以在确定使用时覆盖原始对象。 -
是的,但是没有标志的#delete 也可以返回一个减去指定元素的克隆(这是我在没有标志的情况下所期望的):)