Ruby静态初始化继承

时间:2013-12-27 20:32:31

标签: ruby class inheritance static

我在Ruby中有一个类,有一些像这样的静态初始化:

class Repository
  def self.my_static_setup
    ....
  end

  my_static_setup

  ...
end

上面的代码工作正常,我的自定义静态初始化程序被调用,问题是每当我继承这个类时:

class PersonRepository
  ...
end

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

2 个答案:

答案 0 :(得分:4)

@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!

答案 1 :(得分:0)

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