Ruby如何知道变量属于这段代码?

时间:2014-04-29 02:03:07

标签: ruby-on-rails ruby

我想知道Ruby如何知道哪些变量被分配给某些代码。例如,在此代码中:

print "What's your first name?"
first_name = gets.chomp
first_name.capitalize!

print "What's your last name?"
last_name = gets.chomp
last_name.capitalize!

print "What city are you from?"
city = gets.chomp
city.capitalize!

print "What state or province are you from?"
state = gets.chomp
state.upcase!

puts "Your name is #{first_name} #{last_name} and you're from #{city}, #{state}!"

Ruby如何知道city变量是用户输入的答案,问题是“你来自哪个城市?”?

1 个答案:

答案 0 :(得分:1)

gets方法从标准输入读取一行,并将其作为字符串返回。然后在chomp(它刚刚读取的字符串)的结果上调用gets。然后将结果分配给变量(citystate等)。

方法capitalize!实际上修改了调用它的对象。在city.capitalize!之后,city引用的字符串已被修改(大写)。这不同于返回对象的修改版本(这是gets.chomp期间发生的事情,其中​​gets的结果永远不会存储在任何地方,它会立即被chomp修改并且结果然后存储

进一步澄清:每次调用gets都会从控制台读取一个新字符串,然后chomp将其存储在变量中。这就是为什么你的程序要求输入几个输入并将它们保存在这些变量中的原因。