子クラスがその親からクラスレベルのインスタンス変数を継承するようにしたいのですが、それを理解できないようです。基本的に私はこのような機能を探しています:
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 は、私が望む動作を正確に提供します...ただし、クラス変数の場合。
求めすぎているような気がします。何か案は?