ruby中的access类变量
为什么ruby中的类变量的行为不像静态变量,我如何只通过Mytest.value而不是Mytest.new.value访问它ruby中的access类变量,ruby,class,variables,Ruby,Class,Variables,为什么ruby中的类变量的行为不像静态变量,我如何只通过Mytest.value而不是Mytest.new.value访问它 class MyTest @@value=0 def value @@value end end puts MyTest.new.value [编辑]阅读评论,了解为什么不这样做 class MyTest @value=0 class << self attr_accessor :value end end 相
class MyTest
@@value=0
def value
@@value
end
end
puts MyTest.new.value
[编辑]阅读评论,了解为什么不这样做
class MyTest
@value=0
class << self
attr_accessor :value
end
end
相反,如果您确实需要以这种方式访问变量,我建议使用一个简单的模块
否则,就像Joshua Check在原始帖子中所评论的那样,您应该为类使用实例变量并具有访问器
class MyTest
@@value = 0
def self.value
@@value
end
end
self使其成为一个类方法,类直接调用。虽然其行为类似,但类对象的类变量和实例变量之间有着重要的区别,最大的区别在于继承如何处理它们。另外,类你是对的,正确的方法是好的,这是你刚刚发布的答案。静态这个术语在Ruby中并不适用。最好不要使用类变量。我已经从我的工具箱中完全删除了它们。相反,在类上使用实例变量,如Erik所示。如果您的实例也需要访问它们,请为它们提供委托给类的方法。