我在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
调用该方法。这部分不能继承,它只是代码。