Ruby 静态初始化继承



我在Ruby中有一个类,它有一些静态初始化,如下所示:

class Repository
  def self.my_static_setup
    ....
  end
  my_static_setup
  ...
end

上面的代码工作正常,并且调用了我的自定义静态初始值设定项,问题是每当我继承这个类时:

class PersonRepository
  ...
end

静态初始化不是继承的,因此不会被调用。我做错了什么?

@megar正确地告诉了你为什么会遇到这个问题。

根据OP的评论:

我看到它不是继承的,所以我正在尝试找到一种解决方法,以便在定义子类时调用self.my_static_setup。

然后我可以给你以下解决方案,让你的事情为你工作。请参阅Class#inherited相同的内容,即每当创建当前类的子类时都会调用回调。

class Repository
  def self.my_static_setup
    puts 'Hello!'
  end
  def self.inherited(subclass)
    my_static_setup
  end
end

class PersonRepository < Repository
  #...
end
# >> Hello!

您立即使用 my_static_setup 调用该方法。这部分不能继承,它只是代码。

最新更新