【发布时间】:2020-06-03 21:55:23
【问题描述】:
我正在尝试从子类访问类变量。我知道类变量不是继承的,这回答了为什么代码不起作用的问题,但是我不完全理解如何解决它。
这是我的代码:
Class A
...
class << self
def format(a, b)
@format = a
end
def item(a, b)
@item[a] = b
end
end
end
Class B < A
format 4, 7
item 7, 12
...
end
Class C < B
item 7, 18
end
在 irb 会话中运行以下命令
B.format => 4
C.format => nil
所以了解类变量不是继承的,是否可以制作C.format => 4 或者我需要这样重构:
Class B < A
format 4, 7
item 7, 12
end
Class C < A
format 4, 7
item 7, 18
end
我想避免后者的原因是我有很多以相同方式定义的变量(调用函数来设置类变量),我不想在 B 类中复制所有代码和 C,因为一个实例变量不同。
【问题讨论】:
-
为什么不创建一个模块并将变量(可能是attr_accessors)放在那里?
-
您的代码中没有类变量。你是说实例变量吗?
标签: ruby class inheritance