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

时间:2009-04-02 10:43:28

标签: ruby naming-conventions

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

2 个答案:

答案 0 :(得分:33)

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

this blog post中解释得非常好。引用帖子:

  

!在方法名称中以!结尾!   意思是“这种方法很危险” - 或者,   更准确地说,这种方法是   否则的“危险”版本   等效方法,名称相同   减去! “危险”是相对的;该   !什么都没有意义,除非   它所对应的方法名称   一个类似的,但没有轰炸的方法名称。

  

!并不意味着“这种方法   改变它的接收器。“很多   “危险”的方法会改变他们的   接收器。但有些人没有。我重复: !   并不意味着该方法发生了变化   它的接收器。

答案 1 :(得分:12)

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

bang版本会修改你的字符串。

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