Ruby:为每个子类执行代码
给定一个父类,有没有办法为加载的每个子类插入代码?即 给定:Ruby:为每个子类执行代码,ruby,inheritance,metaprogramming,subclass,Ruby,Inheritance,Metaprogramming,Subclass,给定一个父类,有没有办法为加载的每个子类插入代码?即 给定:ParentClass,如何像这样插入代码: class ChildClass < ParentClass execute_function ... end class子类
ParentClass
,如何像这样插入代码:
class ChildClass < ParentClass
execute_function
...
end
class子类
对于
父类
中的父类的所有子类,重写继承的方法
class ParentClass
def self.inherited(subclass)
execute_function
super
end
...
end
请参阅:如果这些类已加载,该怎么办?这段代码应该做什么?@SergioTulentsev Err,如果一个类的父类没有加载,该如何加载它呢?@meagar:现在已经很晚了,我在问一些愚蠢的问题:)哇。。。花了这么多时间找这个。使用super(subclass)
安全正确吗?可以,但不是必需的<没有参数的code>super
将使用相同的参数调用父类中同名的方法。Russ Olsen在他的书《雄辩的Ruby》中有一个有趣的使用此钩子的例子。每个子类读取不同类型的文件,并且父类的结构使添加新的子类时不需要对其进行更改。Re super,这当然只在您希望父类的父类也得到通知时才需要。但是,您在这里得到的子类将不完整。例如,如果您在子类中定义了一个类方法或类常量,则该类方法或类常量在此处不可用。@trcarden,如何仅在读取子类后才能执行代码?