创建允许爆炸和非爆炸选项的方法

时间:2014-10-10 16:12:17

标签: ruby methods

我想知道是否有可能创建一个方法,比如Array#square(将数组中的元素对齐),它允许一个可选的bang !标识符?

这样,接收器是否被永久修改仅取决于该方法是否被激活。例如,可以定义一个方法:

class Array
  def square(!)
    #code
  end
end

或者,是否有必要创建两个这样的方法?

class Array
  def square
    #code
  end
  def square!
    #code
  end
end

1 个答案:

答案 0 :(得分:4)

通常单独定义两个方法,其中非危险版本在副本上调用bang方法:

class Array
  def square
    dup.square!
  end
  def square!
    #code
  end
end