晶体静态变量

问题描述:

晶体是否得到了静态变量,或者是否必须使用具有文件/全局范围的全局变量?晶体静态变量

def test(value) 
    static var = 1 
    var += value 
    return var 
end 

pp test 0 #=> 1 
pp test 1 #=> 2 
pp test 1 #=> 3 
pp test 0 #=> 3 

水晶没有静态变量作用域方法。你需要使用class variables此:

class Test 
    @@var = 1 
    def self.test(value) 
    @@var += value 
    return @@var 
    end 
end 

pp Test.test 0 #=> 1 
pp Test.test 1 #=> 2 
pp Test.test 1 #=> 3 
pp Test.test 0 #=> 3 

您也可以使用宏class_propertyclass_setterclass_getter

class Test 
    class_property var = 1 
end 

Test.var += 0 
pp Test.var #=> 1 
Test.var += 1 
pp Test.var #=> 2 
Test.var += 1 
pp Test.var #=> 3 
Test.var += 0 
pp Test.var #=> 3