2015-02-02 2 views
0

Когда происходит унаследованный крюк?Когда метод ручного класса «унаследовал» метод стрельбы?

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

В то же время я не хочу, чтобы этот код запускался внутри родительского класса (поэтому я не могу просто сбросить код в родительский класс).

ответ

1

Метод базового класса self.inherited (если задан) вызывается до оценивается тело его дочернего класса.

Это тривиально просто, чтобы доказать себе:

class Base 
    def self.inherited(what) 
    puts "base" 
    end 
end 

class Child < Base 
    puts "child" 
end 

Выход

база
ребенок

Однако, я не могу найти никаких гарантий, что это дело. Пока вы это сделаете, я бы не стал предполагать, что это верно для всех текущих реализаций Ruby.

Смежные вопросы