所以这里有一个更 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
}