global 编译提示

可以给过程里的变量加上 global 编译提示,命令编译器把这个变量存储在全局位置,并且在程序启动时初始化一次。

  1. proc isHexNumber(s: string): bool =
  2. var pattern {.global.} = re"[0-9a-fA-F]+"
  3. result = s.match(pattern)

在泛型过程里使用时,编译器会为泛型过程的每个实例创建独立的全局变量。编译器为某个模块创建的这些全局变量, 其初始化时的先后顺序不做规定;但是,整体上是先初始化这个模块的顶层变量,再初始化这些全局变量; 如果其它模块导入了这个模块,那么这些全局变量的初始化将早于其它模块里的变量。