Ruby 如何编写调用基类';当它们';重新定义?

Ruby 如何编写调用基类';当它们';重新定义?,ruby,class,Ruby,Class,假设我有一门课: class ComponentLibrary def self.register(klass); ...; end end 假设我还有一个基类: class BaseComponent ComponentLibrary.register self end 我如何编写派生类,以最少的重复次数,在定义它们时将自己注册到ComponentLibrary?(换句话说,我不想到处写ComponentLibrary.register self。) 说清楚点,我说的是写其他课程,

假设我有一门课:

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
class RedComponent
但我不想编写组件库。为每个组件注册self

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

class RedComponent < BaseComponent
end
def self.inherited(基本) 组件库.寄存器(基) 结束 结束 类RedComponent
这方面的东西可能适合你

编辑:更改为#继承。

类基本组件
def self.inherited(基本)
组件库.寄存器(基)
结束
结束
类RedComponent
这方面的东西可能适合你


编辑:更改为#继承。

这不起作用,因为模块只包含一次——在最初定义BaseComponent时。一旦你创建了一个新类(例如,尝试
class-DerivedComponent
),它就会中断。这不起作用,因为模块只包含一次——在最初定义BaseComponent时。一旦你创建了一个新类(例如,尝试
class-DerivedComponent
),它就会中断。