我有一个超类和一组子类。在每个子类中,我定义了一个具有相同名称x
的类实例变量。要为这些类之一创建一个访问器,我只想在子类定义中使用:
class << self
attr_accessor :x
end
我想避免在我的所有子类定义中使用这些相同的代码行。但是如果我把它放在超类定义中,那么它不会为超类的实例变量定义一个访问器吗?那不是我想要的。有没有办法在一个地方为所有子类的类实例变量定义一个访问器?
答案 0 :(得分:2)
请记住,attr_accessor指令实际上定义了两个方法:x()和x =()。现在,如果在超类中声明两个公共方法,它们是否可以在子类中使用? 答案是肯定的,除非你重新定义它们。
所以把这个指令放在超类中就可以了,并且会很有魅力。