gpt4 book ai didi

ruby - 在 Ruby 中继承类级实例变量?

转载 作者:数据小太阳 更新时间:2023-10-29 06:32:05 24 4
gpt4 key购买 nike

我想让一个子类从它的父类继承一个类级别的实例变量,但我似乎想不通。基本上我正在寻找这样的功能:

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']

显然,这段代码不起作用。基本上我想为父类中的类级实例变量定义一个默认值,它的子类继承。子类中的更改将是子类的默认值。我希望这一切都发生,而不会影响其 parent 或 sibling 的一个类(class)的值(value)发生变化。 Class_inheritable_accessor 给出了我想要的行为......但对于类变量。

我觉得我可能要求太多了。有什么想法吗?

最佳答案

Rails 将其作为一种名为 class_attribute 的方法内置到框架中。 .您可以随时查看 source for that method并制作您自己的版本或逐字复制。唯一要注意的是你don't change the mutable items in place .

关于ruby - 在 Ruby 中继承类级实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10728735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com