为Ruby中的一组子类定义同一个类实例变量的访问器

时间:2012-07-22 19:54:04

标签: ruby class-instance-variables

我有一个超类和一组子类。在每个子类中,我定义了一个具有相同名称x的类实例变量。要为这些类之一创建一个访问器,我只想在子类定义中使用:

class << self
  attr_accessor :x
end

我想避免在我的所有子类定义中使用这些相同的代码行。但是如果我把它放在超类定义中,那么它不会为超类的实例变量定义一个访问器吗?那不是我想要的。有没有办法在一个地方为所有子类的类实例变量定义一个访问器?

1 个答案:

答案 0 :(得分:2)

请记住,attr_accessor指令实际上定义了两个方法:x()和x =()。现在,如果在超类中声明两个公共方法,它们是否可以在子类中使用? 答案是肯定的,除非你重新定义它们。

所以把这个指令放在超类中就可以了,并且会很有魅力。