Ruby:在方法中递增

时间:2014-11-30 09:38:06

标签: ruby methods count increment

我正在尝试创建一个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

2 个答案:

答案 0 :(得分:2)

您的分数变量未声明。您没有显示类实现,但我建议您使用attr_writer :score(或attr_accessor :score如果您想要get和set var)并在initialize方法中设置初始值。

答案 1 :(得分:2)

方法内的所有局部变量仅在方法中可见。类变量具有更高的可见性,因此将score重命名为@score(方法内外)应该是一种补救措施。