[NAME] ALL.dao.data.static [TITLE] 静态变量 [DESCRIPTION] 另一种变量类型是以static关键字声明的静态变量。 静态变量必须以常量表达式初始化。 1 static stat = "static variable" 2 for(var i = 1 : 5 ) { 3 static stat = 123 4 if( i > 3 ) { 5 static stat = "local static variable" 6 static nested = [1,2,3] 7 io.writeln( stat ) # 输出: local static variable 8 } 9 io.writeln( stat ) # 输出: 123 10 io.writeln( nested ) # 错! "nested"这里不可见. 11 } 12 io.writeln( stat ) # 输出: static variable 13 14 static abc = rand(100) # 错! 需要常量表达式. 在类定义体外,静态变量将作仅局部可见的全局变量,也就是其储存方式跟全局变量 一样是存在命名空 间对象里,但它们的可见性跟局部变量一样。 当一个含静态变量的函数被多次调用运行时,它访问的是同 一静态变量。 1 routine Test() 2 { 3 static aux = 0 4 aux += 1 5 io.writeln( aux ) 6 } 7 Test() # 输出: 1 8 Test() # 输出: 2 9 Test() # 输出: 3 类定义体里的静态变量则是保存在类对象里,而不是类实例对象里。 因此它们可通过类对象直接访问。 1 class Klass 2 { 3 static state = [1,2,3] 4 } 5 io.writeln( Klass.state )