2017-10-11 50 views
1

晶體是否得到了靜態變量,或者是否必須使用具有文件/全局範圍的全局變量?晶體靜態變量

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 

回答

4

水晶沒有靜態變量作用域方法。你需要使用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