Crystal 静态变量

Crystal static variables

Crystal 是否有静态变量,或者我必须在文件/全局范围内使用全局变量?

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

Crystal 没有作用域为方法的静态变量。为此,您需要使用 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