2015-09-29 107 views
-2

有沒有辦法做到這一點?Ruby - 繼承方法Order

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

繼承可能會變得毛茸茸有時容易出錯。除非有很多孩子正在使用「Parent」類的特定動作,否則我建議您只需在模塊中捕獲所需的所有動作,然後使用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

因此,你建議總是使用mixin而不是繼承,除非*「你有很多孩子正在使用」Parent「class」*「的特定動作? – ndn

+0

沒說總是。他的例子似乎是不必要地使用繼承。我建議mixin更直接。如果你可以用mixin得到你想要的,我建議你這樣做。 – binarymason

+0

可以用繼承完成的所有事情也可以使用mixins來完成。說你應該使用其中一種,除非你沒有選擇,這是一種泛泛之談。此外,由於旨在理解繼承如何工作的問題,提供替代方案並不能回答IMO的問題。 – ndn