Я учусь по книге Стива Хольцнера, начинающей ruby on rails, и пробую код из книги:
#!/usr/bin/env ruby until($_ != "q") puts "Running" print "Enter q to quit: " gets chomp end
Когда я запускаю Программу, ничего не происходит!
$_ равно nil при запуске процесса.Таким образом, условие until немедленно выполняется и даже не запускает цикл один раз.
$_
nil
until
Исправил твой код, бра
#!/usr/bin/env ruby foo = '' while foo != 'q' puts "Running" print "Enter q to quit: " foo = gets foo.chomp! end
$_ вернется nil при запуске этой программы. Поскольку nil равно! = До q, программа даже не запускается. Это выйдет с nil.
q
должно быть until($_ == "q")
until($_ == "q")
То, что у вас есть, предполагает, что оно работает до тех пор, пока не будет введено что-либо, кроме "q". Таким образом, он выйдет, когда что-нибудь наберется, и если наберется q, то он продолжится.
Поскольку вы хотите повторять до тех пор, пока введенная буква не будет q, ваша первая строка должна быть;
Прямо сейчас, $_ не установлен на q при первом входе, поэтому он немедленно выйдет из цикла.