0

これがコードです

class RockPaperScissors

attr_reader :rock, :paper, :scissors, :determinant

def initialize
    @rock=1
    @paper=2
    @scissors=4
    @determinant=0
end

def play(param1, param2)
    @determinant = param1 + param2
    puts @determinant
end

end

このコードは完全ではありません。続行するには、@determinant変数が実際にparam1とparam2の合計である必要があります。

これは、コマンドラインアクティビティの要約です。

irb
source "rps2.rb"
rps = RockPaperScissors.new
rps.play(:scissors, :rock)

NoMethodError: undefined method '+' for :scissors:Symbol
from rps2.rb.rb:14:in 'play'
from (irb):23
4

3 に答える 3

2

これを試して:

rps.play(rps.scissors, rps.rock)
于 2012-06-07T01:03:26.387 に答える
1
@determinant = param1 + param2

おそらく

@determinant = instance_variable_get("@#{param1}") + instance_variable_get("@#{param2}")
于 2012-06-07T00:59:22.630 に答える
1

「attr_reader」がある場合は、次のようにプレイする必要があります。

rps.play(rps.scissors, rps.rock)

シンボルを使用する別の可能な方法:

def initialize
    @hand = { :rock => 1, :paper => 2, :scissors => 4 }
    @determinant=0
end

def play(param1, param2)
    # check if params are correct

    puts @determinant = @hand[param1] + @hand[param2]
end
于 2012-06-07T01:08:59.497 に答える