小写和小写之间的区别! 在Ruby中

我只是学习Ruby而且我不太了解有和没有’!’的几个Ruby方法之间的区别。 在末尾。 有什么不同? 为什么我会使用一个而不是另一个?

最后带有感叹号的方法通常称为爆炸方法。 爆炸方法不一定修改其接收器,也不能保证没有感叹号的方法不会。

在这篇博文中, 这一切都得到了很好的解释。 引用post:

的! 在方法名称中以!结尾! 意味着,“这种方法很危险” – 或者更准确地说,这种方法是其他等效方法的“危险”版本,同名减去! “危险”是相对的; 的! 除非它所使用的方法名称对应于一个类似但非爆炸性的方法名称,否则它本身并不意味着什么。

的! 并不意味着“这种方法改变了它的接收器。”许多“危险”的方法确实改变了它们的接收器。 但有些人没有。 我重复: ! 并不意味着该方法改变了它的接收器。

非bang downcase()方法只返回一个表示字符串向下的新对象。

爆炸版本修改你的字符串本身。

my_text = "MY TEXT" my_new_text = my_text.downcase puts my_new_text # will print out "my text" puts my_text # will print out "MY TEXT" - the non-bang method doesn't touch it my_text.downcase! puts my_text # will print out "my text". The bang version has modified the object you're calling the method on