Проблема с Ruby-защищенными методами - PullRequest
0 голосов
/ 27 февраля 2011

У меня есть простой базовый класс Ruby, где все методы должны иметь защищенную видимость.Проблема возникает, когда другой класс наследует базовый класс и вызывает его методы.Интерпретатор Ruby останавливается и сообщает мне, что первый интерпретируемый им метод является защищенным, и сообщает, что класс не может его вызвать.Вот мой код:

class Base
  protected
  def methodOne
    # method code
  end

  def methodTwo
    # method code
  end

end

Ошибка возникает, когда подкласс вызывает метод из базы.

Subclass.new.methodOne 

Я явно упускаю что-то важное в модели видимости / наследования Ruby.Любая помощь приветствуется!

1 Ответ

3 голосов
/ 27 февраля 2011

Вы можете вызывать только свои и унаследованные защищенные методы.

Вы создаете другой новый объект (с Base.new) и вызываете methodOne.Вам нужно сделать self.methodOne

Пример:

class Extended < Base

  def new_method
    self.methodOne # calling method one defined in Base
  end

end
...