2017-10-11 14 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_propertyを使用することができ、class_setterまたはclass_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