我想知道这两个例子之间有什么区别:
my_name = gets.chomp
my_name.capitalize
和
my_name = gets.chomp
my_name.capitalize!
答案 0 :(得分:3)
区别在于
my_name.capitalize
返回my_name
的大写版本,而不会影响对象my_name
指向,而
my_name.capitalize!
仍会返回my_name
的大写版本,但my_name
也会更改,所以
my_name = "john"
puts my_name.capitalize # print 'John' but the value of my_name is 'john'
puts my_name.capitalize! # print 'John' and now the value of my_name is 'John'
答案 1 :(得分:1)
来自Ruby capitalize
文档:
capitalize
返回str的副本,第一个字符转换为大写 其余为小写。
capitalize!
通过将第一个字符转换为大写来修改str 其余为小写。如果没有做出任何更改,则返回nil。
答案 2 :(得分:0)
我总是很高兴看到有人进入红宝石!
红宝石的问题在于,即使它是一种非常友好的语言,它也会假设很多东西而不必告诉新手。一旦你有几个月的语言,他们会有很多意义,但之前没有,所以我理解你的问题。
首先,爆炸(!)只是名称本身的一部分。 Ruby允许感叹号和问号作为方法名称的一部分,就像任何其他字符一样。很酷,对吧?
为什么人们会烦恼?嗯,这是一个惯例。根据经验,一个方法应该有一个爆炸标志的公认解释是该方法做了一个侵入性,破坏性或变异的东西,也就是说,它破坏了数据,在数据库,永久更改数据等。
没有必要为这些类型的方法命名,但它是一个在Ruby社区中被很好地保留的惯例。
编程Ruby说:危险的方法,"或修改接收器,可能会命名 尾随"!"。
希望这能回答你的问题。