我正在尝试创建一个CLI算术测验程序,并且难以在该方法中保持分数。每当我尝试递增得分变量(声明)时,我都会收到以下错误消息。
main.rb:17:in `ask': undefined method `+' for nil:NilClass (NoMethodError)
from main.rb:23:in `<main>'
代码粘贴在下面。我相信我需要使用&#39; return&#39;声明做增量但我不确定这是如何工作的。 (即使这不是问题,我仍然欢迎任何人帮助解释你如何使用布尔返回值来计算。)
def ask(question, answer)
print question
user_answer = gets.chomp
if user_answer == answer
puts "Correct!"
score += 1
else
puts "Wrong! The answer was #{answer}"
end
end
答案 0 :(得分:2)
您的分数变量未声明。您没有显示类实现,但我建议您使用attr_writer :score
(或attr_accessor :score
如果您想要get和set var)并在initialize
方法中设置初始值。
答案 1 :(得分:2)
方法内的所有局部变量仅在方法中可见。类变量具有更高的可见性,因此将score
重命名为@score
(方法内外)应该是一种补救措施。