我如何编写派生的Ruby类,在定义它们时调用基类的方法?

时间:2011-08-12 02:48:47

标签: ruby class

假设我有这门课程:

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

1 个答案:

答案 0 :(得分:3)

class BaseComponent
  def self.inherited(base)
    ComponentLibrary.register(base)
  end
end

class RedComponent < BaseComponent
end

这些方面的某些内容可能适合你。

编辑:更改为#inherited。