1
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>`
4

1 回答 1

2

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

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

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

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

于 2012-09-02T22:40:14.120 回答