Вы можете использовать другую форму блока, например:
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 и т. Д.
Интерполяция строк
Это когда объединяются строки.Один из методов, который вы можете использовать, - это написать некоторый код ruby внутри строки - вам нужен хеш-тег и открывающиеся и закрывающиеся фигурные скобки, чтобы он работал.См. эту ссылку для получения дополнительной информации или google "интерполяция рубиновой строки".