Ruby-Inherit方法顺序

Ruby-Inherit方法顺序,ruby,inheritance,methods,super,Ruby,Inheritance,Methods,Super,有办法做到这一点吗 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 类父类 def材料 #需要先执行的错误检查 结束 结束 班级青年

有办法做到这一点吗

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
类父类
def材料
#需要先执行的错误检查
结束
结束
班级青年<家长
def材料
超级的
“在这里做新东西”
结束
结束

这段代码试图通过super调用父方法,然后再也不会返回到“做新东西”部分

遗传有时会变得毛茸茸的,而且容易出错。除非您有很多子级正在使用“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

它确实返回到
“在这里做新东西”
部分。可能实际代码退出或引发异常。哦,好的。你想加上这个作为我可以接受的答案吗?我应该删除我的帖子吗?如果你想,你可以删除它,或者你可以让社区关闭它,因为它不再可复制。是的,删除它。现在它没有任何价值了。所以你建议总是使用mixin而不是继承,除非“你有很多孩子在使用“Parent”类的特定操作”?没有说总是这样。他的例子似乎不必要地使用了继承。我建议混音更直截了当。如果你能通过使用mixin得到你想要的东西,我建议你这样做。通过继承可以做的一切也可以通过mixin来完成。除非你没有选择权,否则说你应该使用其中一种,这是一种过于宽泛的概括。另外,由于这个问题旨在理解继承是如何工作的,所以在我看来,给出一个替代方案并不能回答这个问题。@ndn我明白你的意思。我的立场是帮助提问者理解他想要实现的目标。无论是什么原因导致了这种情况,这都是一个答案。Mixin IMO比继承更容易理解,而且更“即插即用”。话虽如此,还是要感谢您的意见,感谢您帮助我学习适当的堆栈礼仪。Sandi Metz就继承的缺点做了一次很好的演讲,尽管在这次演讲中她使用依赖注入来解决这个问题;)