2015-09-29 2 views
-2

Есть ли способ сделать это?Ruby - метод наследования Порядок

class Parent 
    def stuff 
    #error checking that needs to go first 
    end 
end 

class Young < Parent 
    def stuff 
    super 
    p 'doing new stuff here' 
    end 
end 

Этот код позволяет вызвать родительский метод через super, а затем он никогда не возвращается к части «делать новые вещи».

+3

Это действительно возвращается к разделу '' делать новый материал здесь''. Возможно, фактический код завершает или вызывает исключение. – ndn

+0

О, ладно. вы хотите добавить это как ответ, который я могу принять? я должен удалить свой пост? – appleLover

+0

Вы можете удалить его, если хотите, или вы можете позволить сообществу закрыть его как * Больше не воспроизводимый *. – ndn

ответ

1

Наследование может иногда волосаться и подвержено ошибкам. Если у вас много детей, которые используют определенные действия класса «Родитель», я рекомендую вам просто захватить все действия, которые вы хотите в модуле, и включить их с помощью mixin. Это намного проще и понятнее.

module Stuff 
    def check_errors 
    #error checking that needs to go first 
    end 
end 

class Young 
    include Stuff 

    check_errors 
    p 'doing new stuff here' 
end 
+0

Итак, вы советуете всегда использовать mixins вместо наследования, если только «у вас много детей, которые используют определенные действия класса« Родитель »« *? – ndn

+0

Не говорил всегда. Его пример, казалось, излишне использовал наследование. Я предупреждаю, что mixins более прямолинейны. Если вы можете получить то, что хотите, используя mixin, я рекомендую вам это сделать. – binarymason

+0

Все, что можно сделать с наследованием, также можно выполнить с помощью mixins. Говорить, что вы должны использовать тот или иной, если у вас нет выбора, слишком широк для обобщения. Кроме того, поскольку вопрос, направленный на понимание того, как работает наследование, предоставление альтернативы не отвечает на вопрос ИМО. – ndn

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

  • Нет связанных вопросов^_^