我需要询问用户他们的出生年份,然后显示从出生年份到 2017 年的每一年以及每一年的年龄。
我从这个开始:
puts "when are you born (year) ?"
birth_year = gets.to_i
birth_year.upto(2017){ |birth_year| puts birth_year }
我错过了显示年龄的部分。我尝试了一些东西,比如:
puts birth_year.upto(2017) - birth_year
但是没有用。
最佳答案
您可以像这样使用不同形式的 block :
puts "when are you born (year) ?"
birth_year = gets.to_i
birth_year.upto(2017) do |iterating_year|
puts "Year: #{iterating_year}"
puts "Age: #{iterating_year - birth_year }"
end
或者,如果您希望所有内容都在同一行中,请试试这个 - 但它的可读性较差:
birth_year.upto(2017) { |iterating_year| puts "Year: #{iterating_year}"; puts "Age: #{iterating_year - birth_year }" }
命名 block 变量
- 建议:不要在 block 中使用与 block 外相同的变量名称 - 这只会造成混淆。在这种特殊情况下,使用您编写的代码,您在 block 外定义的
birth_year
将超出范围,并且 block 参数将采用迭代年值:2001, 2002年、2003年等
字符串插值
这是将字符串连接在一起的时候。您可以使用的一种方法是在字符串中编写一些 ruby 代码——您需要一个散列标记和打开和关闭大括号才能使其工作。参见 this link for more信息或谷歌“ruby string interpoloation”。
关于ruby - 显示用户年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55382431/