我为教程问题输入了一个简单的Ruby代码,如下所示。
#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 :(得分:1)
Adrian在TextMate 1.5.9(r1510)中禁用交互式输入是正确的。 See this post from TextMate's developer
但是,您可以升级到恢复交互式输入的“尖端”TextMate版本,并允许您运行上述代码。转到TextMate的Preferences -> Software Updates
并确保选中Automatically check for updates
。
在Cutting-Edge
下拉菜单中选择Watch For:
。最后,点击Check Now
。最新版本(r1589)应自动下载。此版本中重新启用了交互式输入。
答案 1 :(得分:0)
如果您使用TextMate中的Cmd-R快捷键来运行代码,则无法提供输入,因为textmate仅支持输出。您必须在终端中运行它。您收到该错误的原因是$stdin
已关闭,因此gets
会返回nil
。