Ruby:NoMethodError,我在调用它之前定义了方法


class AiClassGame
    def calculate_cpuNum(sum)
        if sum <= 79
            cpuNum = 80 - sum
        elsif sum <= 88
            cpuNum = 89 - sum
        else
            cpuNum = 100 - sum
        end
        #puts 'calculate method'
    end


calculate_cpuNum是我收到调用错误的方法

if sum >= 71
        calculate_cpuNum(sum)
    else
        sum += cpuNum
        checkPlayer = false
        puts 'sum = ' + sum.to_s
        break if sum >= 100
    end
    puts 'Computer has choosen : ' + cpuNum.to_s, 'sum = ' + sum.to_s
end

我收到错误

ai_class_game.rb:39 in <class:AiClassGame>: undefined methodcalculate_cpuNum` for AiClassGame:Class (NoMethodError)from ai_class_game.rb:7:in `<main>`

calculate_cpuNum定义为AiClassGame类的实例方法。但是,调用该方法的代码直接编写在类主体中,而不是在实例方法中编写。

可以从类主体中调用(没有显式接收器(的唯一方法是类方法。实例方法只能从同一类的其他方法调用,或者通过使用 my_ai_class_game_object.calculate_cpuNum 在给定类的对象上调用它们。

我还应该指出,像这样直接在类体内编写代码是非常不寻常的。

代码中的另一个不相关的错误是您在 calculate_cpuNum 方法之外使用 cpuNum 变量。 cpuNum 是一个局部变量,不能在定义它的方法之外使用。

最新更新