假设我有这门课程:
class ComponentLibrary
def self.register(klass); ...; end
end
假设我也有这个基类:
class BaseComponent
ComponentLibrary.register self
end
我如何编写衍生类,只需重复一次,在定义时将ComponentLibrary
注册? (换句话说,我不想继续在任何地方写ComponentLibrary.register self
。)
为了清楚起见,我正在谈论写其他课程,如:
class RedComponent < BaseComponent
# ...
end
class BlueComponent < BaseComponent
# ...
end
但我不想为每一个写ComponentLibrary.register self
。
答案 0 :(得分:3)
class BaseComponent
def self.inherited(base)
ComponentLibrary.register(base)
end
end
class RedComponent < BaseComponent
end
这些方面的某些内容可能适合你。
编辑:更改为#inherited。