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_cpuNumクラスのインスタンスメソッドとして定義しますAiClassGame。ただし、メソッドを呼び出すコードは、インスタンス メソッド内ではなく、クラス本体に直接記述されます。

クラス本体内から (明示的なレシーバーなしで) 呼び出すことができる唯一のメソッドは、クラス メソッドです。インスタンス メソッドは、同じクラスの他のメソッドから、または を使用して特定のクラスのオブジェクトで呼び出すことによってのみ呼び出すことができますmy_ai_class_game_object.calculate_cpuNum

また、そのようにクラス本体内にコードを直接記述することは非常に珍しいことも指摘しておく必要があります。

コードにある別の無関係なエラーは、メソッドcpuNumの外部で変数を使用していることです。はローカル変数であり、それを定義したメソッドの外では使用できません。calculate_cpuNumcpuNum

于 2012-09-02T22:40:14.120 に答える