我一直在学习Ruby课程并且一直在编写示例游戏。这是我的一个课程:
class Player
def askIfTake
puts("Would you like to take a card? > ")
input = gets.chomp
input.downcase!
if input == "y" or input == "yes"
return 1
elsif input == "n" or input == "no"
return 0
else
puts("Invalid input. Please type y or n.")
return askIfTake
end
end
end
然后我又开了一个班:
class PlayerAI < Player
def initialize
super
end
def askIfTake
puts("this is an AI")
return rand(2)
end
end
问题是,当我创建一个PlayerAI实例并尝试从该实例调用askIfTake时,它会调用Player类中声明的方法。为什么会这样?
答案 0 :(得分:4)
这是不可能的。我测试了它(知道它会好的)它对我有用:
>> PlayerAI.new
=> #<PlayerAI:0x00000103889308>
>> PlayerAI.new.askIfTake
this is an AI
您正在以正确的方式执行此操作。检查您是否有任何拼写错误。顺便说一下,在Ruby中,该方法通常使用下划线:PlayerAI.new.ask_if_take
。或者更好,带有问号:PlayerAI.new.will_take?
。