だから、ここにもっとJava-esqのアプローチがあります(私は思う)...私はRubyでこのコードを持っています
class Human
def move
p 'Human move: X'
end
end
class Computer
def move
p'Computer move: O'
end
end
class Player
def initialize(letter)
if letter == 'X'
return Human.new
else
return Computer.new
end
end
end
bob = Player.new('X')
bob.move
cli 'Human move: X' に戻ることを期待していますが、次のエラーが表示されます...
undefined method `move' for #<Player:0x007f8d930895a8> (NoMethodError)
誰もこのRuby初心者を助けることができますか?
- - - - - - - - - - - - -討論 - - - - - - - - - - - -
今、私は継承とオーバーライドを使用して、より「古典的な」Ruby のやり方でこれを行う方法を考え出しました。さて、これは私の心のサブプロセッサには意味がありません.つまり、このようにすると...他のクラスファイルでクラスファイルを要求し、新しいオブジェクトをインスタンス化することができました. Java で行う場合のように真にポリモーフィックであるとは感じません....コードは次のとおりです....
class Player
def move
return ""
end
end
class Human < Player
def move
return 'Human move: X'
end
end
class Computer < Player
def move
return'Computer move: O'
end
end
players = [Human.new, Computer.new]
players.each {|player|
print player.move
}