声明并初始化静态变量和数组。
STATIC [LOCAL] <idVar> [:= <uValue>] [, ...] [AS | IS <idType>] [, ...]
STATIC [LOCAL] DIM <ArraySpec> [, ...] AS | IS <idType> [, ...]
STATIC [LOCAL] <ArraySpec> [, ...] [AS ARRAY] [, ...]
注:为方便起见,STATIC 语句使用了多个语法。 如果每个定义之间用逗号隔开,则可以使用一条 STATIC 语句声明变量、动态数组和维数组。
<idVar> | 要声明的局部变量的有效标识符名称。 |
<uValue> | 分配给变量的初始值。 |
当使用 LOCAL 时,这可以是任何有效的表达式。 |
当使用 STATIC LOCAL 时, 该值可以是下列数据类型的字面表示,也可以是只涉及运算符、字面表示和 DEFINE 常量的简单表达式;但不允许使用更复杂的表达式(包括类实例化)。 |
注意:虽然 <uValue> 可以是字面数组,但必须是一维数组。 不允许使用多维字面数组。 例如,{1, 2, 3} 是允许的,但 {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} 则不允许。 |
注意:虽然 Chr() 函数不能在 <uValue> 中使用,但 _Chr() 操作符可以。 _Chr() 在其他方面的功能与 Chr() 完全相同。 |
如果未指定 <uValue>,变量的初始值取决于所声明的数据类型(例如,如果不使用强类型,则为 NIL;如果使用 AS INT,则为 0,等等)。 |
DIM <ArraySpec> | 要声明的有维数的数组。 |
<ArraySpec> | 要声明的动态数组。 在这两种情况下,<ArraySpec> 都是以下其中之一: |
<idArray>[<nElements>, <nElements>, <nElements>]
<idArray>[<nElements>][<nElements>][<nElements>]
除了第一个维度外,所有维度都是可选的。
<idArray> 要声明的数组的有效标识符名称。对于动态数组,数组元素初始化为 NIL。对于定维数组,元素的初始值取决于数据类型,如上文对 `<uValue>` 的解释。 |
<nElements> 定义数组特定维度中的元素数量。维度由你指定的 <nElements> 参数的数量决定。 |
<nElements> 可以是一个字面数字表示,或者是仅涉及运算符、字面量和 DEFINE 常量的简单数字表达式;然而,不允许使用更复杂的表达式(例如函数调用)。 |
AS <idType> | 指定数据类型。如果省略,编译器依据编译选项来决定数据类型,或者是 USUAL,或者是由编译器自行决定。 |
IS <idType> | 指定一种结构体数据类型,在这种数据类型中,结构体所需的内存将在堆栈中分配(<idStructure> 是唯一允许使用 IS 关键字的 <idType> 类型)。有关数据结构体内存分配的更多信息,请参阅本指南中的 VOSTRUCT 。 |
AS ARRAY | 对于动态数组声明,指定整个数组的数据类型。 |
<arrayName> | 数组的变量名。数组的大小与 <nRows> 和 <nColumns> 所声明的一样。数组可以使用括号作为分隔符,也可以使用方括号。 |
我们建议使用方括号。 |
STATIC 关键字是用 LOCAL 语句声明的变量的生命周期修改器,防止创建实体返回调用例程时从内存中释放变量。 这里将其单独列出,是因为 LOCAL 关键字是可选的,STATIC 可以作为变量声明语句独立存在于例程中。 有关静态变量声明的说明和注意事项,请参阅 LOCAL 语句。