2011-09-16 39 views
1

我一直在爲一個班級學習Ruby,並且一直在寫樣本遊戲。這是一個有點我的類別之一:如何正確地重寫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類中聲明的方法。這是爲什麼發生?

回答

4

這是不可能的。我測試了它(知道這將是罰款)​​,它爲我工作:

>> PlayerAI.new 
=> #<PlayerAI:0x00000103889308> 
>> PlayerAI.new.askIfTake 
this is an AI 

你以正確的方式做這個。檢查你是否有拼寫錯誤。順便提一下,在Ruby中,該方法通常使用下劃線:PlayerAI.new.ask_if_take。或者更好,帶問號:PlayerAI.new.will_take?

+0

謝謝。結果我只是忽略了一些簡單的東西,當我宣佈這個課程時,我實際上是在宣佈玩家課程。我正在尋找一個小時左右的問題,我沒有看到這個簡單的錯字 –

+0

@AohmZ:隨着時間的推移,你會更快地選擇拼寫錯誤;最終你會有一個「第六個[編程]意義」,並且能夠在發生錯誤之前發現它們。) – Peter

+0

我已經編程了一段時間,它實際上只是這些罕見的錯誤之一。我想,當你陷入一種新語言時,你忽略了一些東西:) –

相關問題