0

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

class MyTest
  @@value=0

  def value
    @@value
  end
end

puts MyTest.new.value
4

2 回答 2

7

你想要类似的东西

class MyTest
  @@value = 0
  def self.value
    @@value
  end
end

self使其成为类方法,该类直接调用该方法。

于 2012-06-09T02:47:53.210 回答
2

[编辑] 阅读评论以了解为什么不这样做。

class MyTest
  @value=0

  class << self
    attr_accessor :value
  end
end

相反,如果你真的需要以这种方式访问​​变量,我建议使用一个简单的模块。

否则,就像 Joshua Cheek 在原始帖子中评论的那样,您应该为您的类使用实例变量并拥有访问器。

于 2012-06-09T02:44:45.807 回答