为什么ruby中的类变量的行为不像静态变量,如何通过执行Mytest.value而不是MyTest.new.value来访问它?
class MyTest
@@value=0
def value
@@value
end
end
puts MyTest.new.value
答案 0 :(得分:6)
你想要像
这样的东西class MyTest
@@value = 0
def self.value
@@value
end
end
self
使它成为类方法,类直接调用。
答案 1 :(得分:2)
[编辑]阅读评论以了解为何不这样做。
class MyTest
@value=0
class << self
attr_accessor :value
end
end
相反,如果你真的需要以这种方式访问变量,我建议一个简单的模块。
否则,就像Joshua Cheek对原帖一样,你应该为你的班级使用Instance Variable并拥有访问器。