加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在ruby中修补继承的钩子?

发布时间:2020-12-17 02:38:48 所属栏目:百科 来源:网络整理
导读:只是一个简单的例子. class Base def self.inherited(child) p 'Base.inherited' endendclass User Base p 'User'end 这让我产生了 "Base.inherited""User" 这工作正常,但我如何修补Base类的继承钩子? 假设我想要我的结果 "Base.inherited""Something inher
只是一个简单的例子.

class Base
  def self.inherited(child)
    p 'Base.inherited'
  end
end

class User < Base
  p 'User'
end

这让我产生了

"Base.inherited"
"User"

这工作正常,但我如何修补Base类的继承钩子?

假设我想要我的结果

"Base.inherited"
"Something inherited"
"User"

并且仍然让我的User类继承Base.

任何想法,解决方法?

谢谢!

更新问题更具体.

我需要在类User继承Base而不修改User类时完全运行一些代码.

假设我有Base类,它定义了继承的方法.从一方面我不知道其他类将继承Base.另一方面,我无法修改Base类的原始继承方法.

那么如何修补该方法呢?

谢谢!

解决方法

module Foo
  def self.included(child)
    p "Something inherited"
  end
end

class Base
  def self.inherited(child)
    p 'Base.inherited'
  end
end

class User < Base
    include Foo
    p 'User'
end

# >> "Base.inherited"
# >> "Something inherited"
# >> "User"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读