2012-03-15 17 views
-1

我從書中學習由史蒂夫Holzner的軌道開始紅寶石,並正嘗試一些書中的代碼:開始紅寶石例如不產生輸出

#!/usr/bin/env ruby 
until($_ != "q") 
    puts "Running" 
    print "Enter q to quit: " 
    gets 
    chomp 
end 

當我運行程序,沒有任何反應!

+1

你是如何運行的程序?什麼環境(操作系統,紅寶石版本)? – dbenhur 2012-03-15 20:06:03

+1

當你啓動這個程序時,你認爲'$ _'包含了什麼? – 2012-03-15 20:07:12

回答

4

$_當過程開始時爲nil。所以,until條件立即滿足,甚至不運行一次循環。

2

既然你想重複,直到輸入的字母q,你的第一行應該是;

until($_ == "q") 

眼下,$_沒有到達那裏的時候第一時間爲q,所以它會立即退出循環。

2

需要是until($_ == "q")

你擁有了它是在暗示,它運行到除「Q」一切的好辦法便被輸入。所以當鍵入任何內容時,它將退出,如果輸入q,則它將繼續。

2

$_在您運行此程序時將返回nil。因爲nil是!=到q,程序根本不運行。它將以nil退出。

2

固定代碼,布拉赫

#!/usr/bin/env ruby 
foo = '' 
while foo != 'q' 
    puts "Running" 
    print "Enter q to quit: " 
    foo = gets 
    foo.chomp! 
end