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