Я хочу, чтобы дочерний класс наследовал переменную экземпляра класса от родителя, но я не могу понять ее. В основном я ищу такую функциональность:
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 дает именно то, что я хочу... но для переменной класса.
Я чувствую, что, возможно, я слишком много спрашиваю. Любые идеи?