【发布时间】:2010-09-09 18:50:36
【问题描述】:
我希望将以下模块包含在我拥有的类中:
module InheritanceEnumerator
def self.included(klass)
klass.instance_eval do
instance_variable_set('@subclasses',[])
def self.subclasses
@subclasses
end
original_method = self.respond_to?(:inherited) ? self.public_method(:inherited) : nil
instance_variable_set('@original_inherited_method', original_method)
def self.inherited(subclass)
@original_inherited_method.call(subclass) if @original_inherited_method
@subclasses<<subclass
end
end
end
end
我想要实现的是我希望我的父类具有对直接子类的引用。我还需要其他东西在我的班级上设置的任何其他以前的“继承”方法来保持原位。我做错了什么?
【问题讨论】:
-
你到底遇到了什么错误?
-
原始方法没有被调用。
标签: ruby metaprogramming