Можно ли получить доступ к защищенным методам вне класса - ruby - PullRequest
0 голосов
/ 02 июля 2018
class User    
  def say_secret_with_self
    self.secret
  end

  protected

  def secret
    "secret"
  end
end

u = User.new
p u.say_secret_with_self   # => "secret"

Я слышал, что к защищенным методам могут обращаться только унаследованные члены. Но вышесказанное возможно в рубине. Это правильный код?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

метод secret по-прежнему защищен. Вы не можете вызывать его извне вашего класса (или унаследованного класса). но вы можете назвать его с say_secret_with_self, потому что он все еще находится в том же классе с secret

0 голосов
/ 02 июля 2018

Да, это правильный код. Экземпляр класса может вызывать собственные методы, даже если они protected. protected/private методы скрыты снаружи, но не изнутри.

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