Как правильно переопределить методы экземпляра в Ruby? - PullRequest
1 голос
/ 16 сентября 2011

Я изучал 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.Почему это происходит?

1 Ответ

4 голосов
/ 16 сентября 2011

Это невозможно. Я проверил это (зная, что это будет хорошо), и это сработало для меня:

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

Вы делаете это правильно. Проверьте, есть ли у вас орфографические ошибки. Кстати, в Ruby метод обычно использует подчеркивание: PlayerAI.new.ask_if_take. Или лучше с вопросительным знаком: PlayerAI.new.will_take?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...