关于语法:什么是!

What does an ! following the name of a Ruby method signify?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Why are exclamation marks used in Ruby methods?

在查看一些Ruby代码时,我遇到了这个方法:

1
2
3
def SomeMethod!
    // ...
end

什么事!方法名后面是什么?


我认为,将一个方法标记为"比其他方法更危险"只是一种惯例,这可能意味着它有一个影响其参数或类属性的副作用。这只是提醒你要小心。


方法名称末尾的感叹号表示这样的方法以比不使用!的同一方法版本更危险的方式执行操作。

请注意,如果没有其他方法,则永远不要使用!。您可以理解!是一种在视觉上区分两种其他等效方法的方法。

例子:

Array#flatten

Array#flatten!

Kernel#exit!

Kernel#exit


按照惯例,这意味着该方法会改变类的状态。