[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 )