第七章 ObjectScript - Variables
Variables
在 ObjectScript
中,有两种变量,按它们保存数据的方式分类:
局部变量可以具有公共或私有范围。
- 局部变量,在内存中保存数据。
局部变量可以具有公共或私有范围。
-
Global
,在数据库中保存数据。这些也称为全局变量。与Global
的所有交互都会立即影响数据库。例如,当设置Global
值时,该更改会立即影响存储的内容;没有单独的步骤来存储值。同样,当删除Global
时,数据会立即从数据库中删除。
变量名称
变量的命名遵循以下规则:
- 对于大多数局部变量,第一个字符是字母,其余字符是字母或数字。有效名称包括
myvar
和i
- 对于大多数
Global
,第一个字符始终是脱字号 (^
)。其余字符是字母、数字或句点。有效名称包括^myvar
和^my.var
IRIS
还支持一种特殊的变量,称为百分比变量;这些不太常见。百分比变量的名称以百分比字符 (%
) 开头。百分比变量的特殊之处在于它们始终是公共的;也就是说,它们对进程中的所有代码都是可见的。这包括调用堆栈中的所有方法和所有过程。
定义百分比变量时,请使用以下规则:
- 对于局部百分比变量,名称以
%Z
或%z
开头。其他名称保留供系统使用。 - 对于
global
百分比变量,名称以^%Z
或^%z
开头。其他名称保留供系统使用。
变量类型
ObjectScript
中的变量是弱动态类型的。它们是动态类型的,因为不必声明变量的类型,并且变量可以采用任何合法值,即任何合法的文字值或任何合法的 ObjectScript
表达式。它们是弱类型的,因为用法决定了它们的计算方式。
ObjectScript
中的合法文字值具有以下形式之一:
- 数字。示例:
100
、17.89
和1e3
- 带引号的字符串,它是包含在一组匹配的引号 (
""
) 内的一组字符。例如:"my string"
要在字符串文字中包含双引号字符,请在其前面添加另一个双引号字符。例如: "This string has ""quotes"" in it."
根据上下文,字符串可以被视为数字,反之亦然。类似地,在某些上下文中,值可以被解释为布尔值(真或假);任何计算结果为零的内容都被视为false
;其他任何内容都被视为true
。
创建类时,可以指定属性、方法参数的类型等。 IRIS
类机制按照预期强制执行这些类型。
Variable Length
变量值的长度必须小于字符串长度限制。
Variable Existence
通常使用 SET
命令定义变量。如前所述,当定义global
时,它会立即影响数据库。
仅当杀死global
(这意味着通过 KILL
命令删除它)时,它才会变得未定义。这也会立即影响数据库。
局部变量可以通过以下三种方式之一变为未定义:
- 被
kill
。 - 进程(定义它的过程)结束。
- 它超出了该进程的范围。
要确定变量是否已定义,请使用 $DATA
函数。例如,以下显示了使用此功能的终端会话:
TESTNAMESPACE>write $DATA(x)
0
TESTNAMESPACE>set x=5
TESTNAMESPACE>write $DATA(x)
1
第一步,我们使用 $DATA
来查看变量是否已定义。系统显示0
,表示该变量没有定义。然后我们将变量设置为 5
并重试。现在该函数返回 1
。
在此示例和前面的示例中,可能已经注意到没有必要以任何方式声明变量。 SET
命令就是所需要的。
如果尝试访问未定义的变量,则会收到 <UNDEFINED>
错误。例如:
TESTNAMESPACE>WRITE testvar
WRITE testvar
^
<UNDEFINED> *testvar
网友评论