访问ruby中的类变量

时间:2012-06-09 02:36:07

标签: ruby class variables

为什么ruby中的类变量的行为不像静态变量,如何通过执行Mytest.value而不是MyTest.new.value来访问它?

class MyTest
  @@value=0

  def value
    @@value
  end
end

puts MyTest.new.value

2 个答案:

答案 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并拥有访问器。