使用'!'的方法之间是否存在默认差异红宝石中没有?

时间:2014-01-14 13:53:24

标签: ruby methods

带'!'的方法之间是否存在默认差异在红宝石中没有?

collect v collect!

flatten v flatten!

依旧......

1 个答案:

答案 0 :(得分:2)

ruby​​ 中,主要区别在于,!方法是自私的,即它们将更改应用于self对象。当没有进行任何更改时,它们返回nil,而非!方法创建新的修改对象。

Rails 中,区别在于,!方法是非!方法的安全版本,这意味着!方法会引发异常代码在执行期间遇到错误,而非!方法只返回错误状态,通常是false条件。