【发布时间】:2011-07-14 13:01:32
【问题描述】:
如果创建类变量通常是危险且不可预测的,为什么我们需要它们?
如果解决方案只是将类实例变量与类级别访问器一起使用:
class Foo
@variable = :something
def self.getvariable
@variable
end
def self.setvariable(value)
@variable = value
end
end
那我们为什么需要类变量???
【问题讨论】:
-
为什么会“危险且不可预测”?
-
因为所有类变量都可以在所有继承树中访问 => 它们可以被子类修改。看这里sporkmonger.com/2007/2/19/…
-
如果您有类层次结构并且需要在某个层次结构树中的类之间共享一些数据,则需要类变量。
-
taro,所以,我们应该只在子类中像常量一样使用它们,而不是修改它们的值?
-
@Sergey 这并不会使它们“危险且不可预测”。它们非常可预测,只是不是类级别的实例变量
标签: ruby language-design class-variables