【发布时间】:2014-10-10 16:12:16
【问题描述】:
我想知道是否有可能创建一个方法,比如 Array#square(将数组中的元素平方),它允许可选的 bang ! 标识符?
这样,receiver 是否被永久修改只取决于方法是否被 bang 调用。例如,是否可以按照以下方式定义一种方法:
class Array
def square(!)
#code
end
end
或者,有必要创建两个这样的方法吗?
class Array
def square
#code
end
def square!
#code
end
end
【问题讨论】:
-
你的例子没有任何意义。 #sum 是没有办法修改数组的。因此#sum!毫无意义。
-
你必须创建两个方法。
!是方法名的一部分,不能作为参数。 -
我为这个可怜的例子道歉。例如,将数组中的元素平方是一个更好的选择。我会尝试编辑帖子。谢谢。