我是初学者&刚开始通过Codecademy学习ruby。我知道这将是一个非常简单的问题。为什么我们在此代码中声明answer2
?他们俩都不平等吗?
print "This is my question?"
answer = gets.chomp
answer2 = answer.capitalize
answer.capitalize!
感谢。
答案 0 :(得分:1)
他们试图教你capitalize
和capitalize!
之间的区别。第一个不修改字符串,而是返回它的修改后的副本。而后者(带有爆炸!
标记)会修改字符串本身。
因此,为了进一步解释上述示例,请考虑以下内容:
print "This is my question?"
answer = gets.chomp
answer2 = answer.capitalize
puts "answer= " + answer + ", while answer2= " + answer2
answer.capitalize!
puts "now answer= " + answer
因此,如果我们执行前面的代码并在提示时输入foobar
,则输出将为:
This is my question?foobar
answer= foobar, while answer2= Foobar
now answer= Foobar
通常,ruby中的方法不会修改调用它们的对象,而是返回修改后的副本。因此,在some_object.some_method
中,some_method
方法不会更改some_object
,但会返回一个副本并进行一些修改。或者,使用bang !
标记的方法会更改调用它们的对象。因此some_object.some_method!
会更改some_object
本身。