2011-09-16 6 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 

: 여기 내 클래스 중 하나의 비트는 내가 PlayerAI의 인스턴스를 생성하고 해당 인스턴스에서 askIfTake를 호출 할 때

class PlayerAI < Player 
    def initialize 
     super 
    end 

    def askIfTake 
     puts("this is an AI") 
     return rand(2) 
    end 
    end 

문제이며, , 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

저는 잠시 동안 프로그래밍을 해왔습니다. 그것은 그 드문 실수 중 하나였습니다. 나는 당신이 새로운 언어에 빠졌을 때 물건을 간과한다고 생각한다. :) –

관련 문제