.downcase!语法简写

时间:2014-04-04 15:38:58

标签: ruby

有人可以解释下面两段代码之间的区别吗?两者最后都有一个!。第一个版本只是简写吗?

print "Who are you?" 
user_input = gets.chomp.downcase!

print "Who are you?"
user_input = gets.chomp
user_input.downcase!

1 个答案:

答案 0 :(得分:5)

编辑:在ruby中的方法名称末尾有一个感叹号(又名" bang")意味着"谨慎处理"。来自马茨本人:

  爆炸(!)并不意味着“破坏性的”#34;也不缺乏意味着非   破坏性的。爆炸标志意味着爆炸版本更多   比非爆炸对手更危险;谨慎处理"。以来   Ruby有很多"破坏性的"方法,如果爆炸标志跟随你   意见,每个Ruby程序都会充满爆炸,因此很难看。

(有关完整主题,请参阅评论中的@ sawa链接。)

对于有问题的方法,downcase正在复制给定字符串,修改该字符串,并返回该副本作为结果。而downcase!修改字符串本身。

在第一种情况下,您要修改存储在gets.chomp中的变量,在第二种情况下修改user_input

请注意,如果您在最后一行(而不是user_input.downcase)致电user_input.downcase!,它实际上无法更改user_input,它只会返回字符串的副本并生成副本小写。