未定义的方法“upcase';对于nil:NilClass(nomethoderor)-Ruby 1.9.3
我是ruby的初学者,试图编写一个简单的程序来检测大写输入。我现在使用ruby-1.9.3-p125。因此,我试图编译以下内容:未定义的方法“upcase';对于nil:NilClass(nomethoderor)-Ruby 1.9.3,ruby,Ruby,我是ruby的初学者,试图编写一个简单的程序来检测大写输入。我现在使用ruby-1.9.3-p125。因此,我试图编译以下内容: # coding: utf-8 puts 'hello! enter something:' while req!=req.upcase req=gets.chomp if req == req.upcase puts "This is UpperCase!" else puts "Not UpperCase :
# coding: utf-8
puts 'hello! enter something:'
while req!=req.upcase
req=gets.chomp
if req == req.upcase
puts "This is UpperCase!"
else
puts "Not UpperCase :( Try again!"
end
end
puts "GoodBye!"
我得到了这样一个错误:
app1.rb:4:in `<main>': undefined method `upcase' for nil:NilClass (NoMethodError)
app1.rb:4:in`:nil:NilClass(NoMethodError)的未定义方法“upcase”
也许我应该包括像这样的lib或smth?顺便说一句,“UpCase”。UpCase`工作正常。您的while循环在分配任何内容之前引用了req 您可以在while条件
while(req=gets.chomp)!=req.upcase
,但这使条件变得复杂,并且仍然无法处理GET返回nil的文件结束条件。最好将条件集中在文件末尾,并在特殊测试中使用break终止循环:
puts 'hello! enter something:'
while req = gets
req.chomp!
if req == req.upcase
puts "This is UpperCase!"
break
else
puts "Not UpperCase :( Try again!"
end
end
puts "GoodBye!"
好吧,这对我很有效,谢谢!但在“while req=get”行中,我们仍然引用“req”,没有对该变量进行特殊定义。可以吗?也许我们应该在使用while循环之前定义这个变量?@IlyaRusanen-ruby不需要定义变量。它第一次看到它们就让它们变大了。