文章
· 八月 23, 2023 阅读大约需 3 分钟

第七章 ObjectScript - Variables

第七章 ObjectScript - Variables

Variables

ObjectScript 中,有两种变量,按它们保存数据的方式分类:

局部变量可以具有公共或私有范围。

  • 局部变量,在内存中保存数据。

局部变量可以具有公共或私有范围。

  • Global,在数据库中保存数据。这些也称为全局变量。与Global的所有交互都会立即影响数据库。例如,当设置Global值时,该更改会立即影响存储的内容;没有单独的步骤来存储值。同样,当删除Global时,数据会立即从数据库中删除。

变量名称

变量的命名遵循以下规则:

  • 对于大多数局部变量,第一个字符是字母,其余字符是字母或数字。有效名称包括 myvari
  • 对于大多数Global,第一个字符始终是脱字号 (^)。其余字符是字母、数字或句点。有效名称包括 ^myvar^my.var

IRIS 还支持一种特殊的变量,称为百分比变量;这些不太常见。百分比变量的名称以百分比字符 (%) 开头。百分比变量的特殊之处在于它们始终是公共的;也就是说,它们对进程中的所有代码都是可见的。这包括调用堆栈中的所有方法和所有过程。

定义百分比变量时,请使用以下规则:

  • 对于局部百分比变量,名称以 %Z%z 开头。其他名称保留供系统使用。
  • 对于global百分比变量,名称以 ^%Z^%z 开头。其他名称保留供系统使用。

变量类型

ObjectScript 中的变量是弱动态类型的。它们是动态类型的,因为不必声明变量的类型,并且变量可以采用任何合法值,即任何合法的文字值或任何合法的 ObjectScript 表达式。它们是弱类型的,因为用法决定了它们的计算方式。

ObjectScript 中的合法文字值具有以下形式之一:

  • 数字。示例:10017.891e3
  • 带引号的字符串,它是包含在一组匹配的引号 ("") 内的一组字符。例如:"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
讨论 (0)1
登录或注册以继续