我想要一个子类从它的父类继承一个类级实例变量,但是我似乎不能理解。基本上,我正在寻找这样的功能:
class Alpha
class_instance_inheritable_accessor :foo #
@foo = [1, 2, 3]
end
class Beta < Alpha
@foo << 4
def self.bar
@foo
end
end
class Delta < Alpha
@foo << 5
def self.bar
@foo
end
end
class Gamma < Beta
@foo << 'a'
def self.bar
@foo
end
end
然后我希望输出如下所示:
> Alpha.bar
# [1, 2, 3]
> Beta.bar
# [1, 2, 3, 4]
> Delta.bar
# [1, 2, 3, 5]
> Gamma.bar
# [1, 2, 3, 4, 'a']
很明显,这段代码不能工作。基本上,我想为父类中的类级实例变量定义一个默认值,它的子类继承了这些变量。子类中的更改将成为子类的默认值。我希望这一切都发生在一个类的值不会影响它的父类或兄弟类的情况下。Class_inheritable_accessor给出了我想要的行为...而是一个类变量。
我觉得我的要求可能太高了。有什么想法吗?
https://stackoverflow.com/questions/10728735
复制相似问题