2010-07-17 45 views
1

我爲教程問題鍵入了一個簡單的Ruby代碼,如下所示。Ruby程序錯誤:NoMethodError

#Grandma is deaf! 
puts "Hey Sonny! It's your lovely Grandmother! How are you?" 
response = gets.chomp 
while response != "BYE" 
    if response != response.upcase 
    puts "Huh?! I CAN'T HEAR YOU!" 
    else 
    puts "NO! NOT SINCE " + (1930 + rand(21)).to_s + "!" 
    end 
    response = gets.chomp 
end 
puts "GOOD BYE, SONNY!"  

然而,當我運行此,該窗口顯示:

Hey Sonny! It's your lovely Grandmother! How are you? 
NoMethodError: private method ‘chomp’ called for nil:NilClass 

at top level in deafGrandma.rb at line 3 

我不明白爲什麼chomp無法識別。我在Mac上使用textMate我有Ruby版本1.8.7,應該沒問題。任何解決方案

太謝謝你了:)

+0

您應該編輯您的問題並用四個空格縮進代碼以保留縮進/格式。 – Adrian 2010-07-17 22:09:25

回答

1

Adrian對於在TextMate 1.5.9(r1510)中禁用交互輸入是正確的。 See this post from TextMate's developer

但是,您可以升級到「尖端」的TextMate版本,以恢復交互式輸入,並允許您運行上述代碼。轉到TextMate的Preferences -> Software Updates並確保Automatically check for updates已被選中。

Watch For:下拉菜單中選擇Cutting-Edge。最後點擊Check Now。最新版本(r1589)應該會自動下載。交互式輸入在此版本中重新啓用。

+0

非常感謝!它現在可用:D:D:D *向下跳轉 – Vector 2010-07-18 03:51:13

+0

如果我的答案解決了您的問題,請單擊大複選框以接受它作爲答案,並歡迎使用堆棧溢出。 :) – michaelmichael 2010-07-18 04:25:16

0

如果您使用的是Cmd的-R快捷方式TextMate中運行你的代碼,你將不能夠因爲TextMate的只支持輸出到提供它的輸入。您將不得不在終端中運行它。您得到該錯誤的原因是因爲$stdin已關閉,所以gets返回nil

+0

感謝您的幫助:)) – Vector 2010-07-18 04:03:27