我在Ruby中有一个类,有一些像这样的静态初始化:
class Repository
def self.my_static_setup
....
end
my_static_setup
...
end
上面的代码工作正常,我的自定义静态初始化程序被调用,问题是每当我继承这个类时:
class PersonRepository
...
end
静态初始化不会被继承,因此不会被调用。我做错了什么?
答案 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
立即调用该方法。那部分不能继承,只是代码。