我從書中學習由史蒂夫Holzner的軌道開始紅寶石,並正嘗試一些書中的代碼:開始紅寶石例如不產生輸出
#!/usr/bin/env ruby
until($_ != "q")
puts "Running"
print "Enter q to quit: "
gets
chomp
end
當我運行程序,沒有任何反應!
我從書中學習由史蒂夫Holzner的軌道開始紅寶石,並正嘗試一些書中的代碼:開始紅寶石例如不產生輸出
#!/usr/bin/env ruby
until($_ != "q")
puts "Running"
print "Enter q to quit: "
gets
chomp
end
當我運行程序,沒有任何反應!
$_
當過程開始時爲nil
。所以,until
條件立即滿足,甚至不運行一次循環。
既然你想重複,直到輸入的字母是q
,你的第一行應該是;
until($_ == "q")
眼下,$_
沒有到達那裏的時候第一時間爲q
,所以它會立即退出循環。
需要是until($_ == "q")
你擁有了它是在暗示,它運行到除「Q」一切的好辦法便被輸入。所以當鍵入任何內容時,它將退出,如果輸入q,則它將繼續。
$_
在您運行此程序時將返回nil
。因爲nil
是!=到q
,程序根本不運行。它將以nil
退出。
固定代碼,布拉赫
#!/usr/bin/env ruby
foo = ''
while foo != 'q'
puts "Running"
print "Enter q to quit: "
foo = gets
foo.chomp!
end
你是如何運行的程序?什麼環境(操作系統,紅寶石版本)? – dbenhur 2012-03-15 20:06:03
當你啓動這個程序時,你認爲'$ _'包含了什麼? – 2012-03-15 20:07:12