Объявление переменных в Ruby?

Когда я знаю, когда объявлять переменную, а не в Ruby?

Я хотел бы знать, почему первый код требует ввода, который должен быть объявлен как строка и вне блока, а второй - нет.

input = ''
while input != 'bye'
  puts input
  input = gets.chomp
end
puts 'Come again soon!'

против

while true
  input = gets.chomp
  puts input 
  if input == 'bye'
    break 
  end
end
puts 'Come again soon!'

Ответ 1

Никакая переменная не объявляется в Ruby. Скорее, правило состоит в том, что переменная должна появляться в присваивании до ее использования.

Посмотрите на первые две строки в первом примере:

input = ''
while input != 'bye'

Условие while использует переменную input. Поэтому перед этим необходимо назначение. Во втором примере:

while true
  input = gets.chomp
  puts input 

Опять же, переменная input назначается перед ее использованием в вызове puts. В обоих примерах все верно с миром.