带'!'的方法之间是否存在默认差异在红宝石中没有?
collect v collect!
flatten v flatten!
依旧......
答案 0 :(得分:2)
在 ruby 中,主要区别在于,!
方法是自私的,即它们将更改应用于self
对象。当没有进行任何更改时,它们返回nil
,而非!
方法创建新的修改对象。
在 Rails 中,区别在于,!
方法是非!
方法的安全版本,这意味着!
方法会引发异常代码在执行期间遇到错误,而非!
方法只返回错误状态,通常是false
条件。