静态变量与特征类类变量,Ruby的区别是什么?

时间:2016-07-08 13:14:07

标签: ruby

我想我在下面要求@store@@store之间存在差异:

class Test
  @@store = 9 
  class << self
    def set_store(v)
      @store = v
    end
    def store
      @store
    end
    def sstore
      @@store
    end
  end
end

Test.set_store 8
p Test.store # 8 
p Test.sstore # 9

a = Test.new

p a.class.store # 8
p a.class.sstore # 9

如果不是本征类,静态变量附加在哪里?这两者在互动方面是否有效?

1 个答案:

答案 0 :(得分:0)

它们都是类变量,但在实例中,您只能访问@@ store变量。

请注意,类变量在Ruby中不是线程安全的,因此如果您计划将变量用作Hash,请使用Mutex。

Using class instance variable for mutex in Ruby