Показать возраст пользователя - PullRequest
1 голос
/ 27 марта 2019

Мне нужно узнать у пользователя год его рождения, а затем отображать каждый год с года рождения до 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

, но это не сработало.

1 Ответ

3 голосов
/ 27 марта 2019

Вы можете использовать другую форму блока, например:

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 }" }

Именование переменных блока

  • Рекомендация: не используйте в своем блоке то же имя переменной, что и вне блока - это просто сбивает с толку.В этом конкретном случае с кодом, в котором вы его написали, birth_year, который вы определили вне блока, выйдет из области видимости, а параметр блока примет значение итерационных лет: 2001, 2002, 2003 и т. Д.

Same and confusing - avoid

Интерполяция строк

Это когда объединяются строки.Один из методов, который вы можете использовать, - это написать некоторый код ruby ​​внутри строки - вам нужен хеш-тег и открывающиеся и закрывающиеся фигурные скобки, чтобы он работал.См. эту ссылку для получения дополнительной информации или google "интерполяция рубиновой строки".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...