2015-09-29 58 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