我只是学习Ruby而且我不太了解有和没有'!'的几个Ruby方法之间的区别.在末尾.有什么不同?为什么我会使用一个而不是另一个?
最后带有感叹号的方法通常称为爆炸方法.爆炸方法不一定修改其接收器,也不能保证没有感叹号的方法不会.
在这篇博文中,这一切都得到了很好的解释.引用帖子:
的!在方法名称中以!结尾!意味着,"这种方法很危险" - 或者更准确地说,这种方法是其他等效方法的"危险"版本,同名减去!"危险"是相对的; 的!除非它所使用的方法名称对应于一个类似但非爆炸性的方法名称,否则它本身并不意味着什么.
和
的!并不意味着"这种方法改变了它的接收器."许多"危险"方法确实改变了它们的接收器.但有些人没有.我重复: !并不意味着该方法改变了它的接收器.
非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