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