我正在做一个游戏,我有一些问题我用define做了一些特殊的案例这是我的定义脚本。

def answerCorrect()
    puts "Correct! Let's proceed to the next question."
    points = points + 1
end

def answerWrong()
    puts "Oh no! That's wrong! Try again!"
    points = points - 2
    input = gets.chomp
end

特殊情况是:
if input == "x"
    answerCorrect()
else
    answerWrong()
end

但是,我得到这个错误:
`answerCorrect': undefined method `+' for nil:NilClass (NoMethodError)

我该怎么解决?

最佳答案

问题是points变量没有在两个方法之间共享。
考虑使用一个实例变量来管理点系统。

class AnswerEvaluator
    def initialize
        @points = 0
    end

    def answerCorrect()
        puts "Correct! Let's proceed to the next question."
        @points = @points + 1
    end

    def answerWrong()
        puts "Oh no! That's wrong! Try again!"
        @points = @points - 2
        input = gets.chomp
    end
end

如果您不想直接访问attr_accessor,则可以使用@points对此进行扩展。

关于ruby - 为什么我得到nil:NilClass的未定义方法`+'(NoMethodError),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41048765/

10-13 05:28