有人可以解释下面两段代码之间的区别吗?最后都有一个特色!.第一个版本只是简写吗?
print "Who are you?"
user_input = gets.chomp.downcase!
print "Who are you?"
user_input = gets.chomp
user_input.downcase!
Run Code Online (Sandbox Code Playgroud)
编辑:在ruby中的方法名称末尾有一个感叹号(又名"bang")意味着"小心处理".来自Matz本人:
爆炸(!)并不意味着"破坏性",也不缺乏意味着非破坏性.爆炸标志意味着"爆炸版本比非爆炸版本更危险;小心处理".由于Ruby有很多"破坏性"的方法,如果爆炸标志跟随你的意见,每个Ruby程序都会充满爆炸,因此很难看.
(有关完整的主题,请参阅注释中的@sawa链接.)
对于有问题的方法,downcase正在制作给定字符串的副本,修改该字符串,并作为结果返回该副本.而downcase!修改字符串本身.
在第一种情况下,您正在修改存储的变量gets.chomp,在您修改的第二种情况下user_input.
请注意,如果您user_input.downcase在最后一行(而不是user_input.downcase!)上调用它实际上不会更改user_input,它只返回该字符串的副本并使该副本为小写.