文章
· 八月 25, 2023 阅读大约需 2 分钟

第九章 ObjectScript - 多维数组

第九章 ObjectScript - 多维数组

多维数组

ObjectScript 中,任何变量都可以是多维数组(也称为数组)。多维数组通常用于保存一组以某种方式相关的值。 ObjectScript 提供的命令和函数可以方便、快速地访问值。

可能会也可能不会直接使用多维数组,具体取决于使用的系统类和自己的偏好。当需要一个用于存储相关值集的容器时,IRIS 提供了一种基于类的替代方案。请参阅集合类。

Basics

多维数组由任意数量的节点组成,由下标定义。以下示例设置数组的几个节点,然后打印数组的内容:

 set myarray(1)="value A"
 set myarray(2)="value B"
 set myarray(3)="value C"
 zwrite myarray

此示例显示了一个典型的数组。
- 该数组有一个下标。在这种情况下,下标是整数 123
- 不需要提前声明数组的结构。
- myarray 是数组本身的名称。
- ObjectScript 提供可作用于整个数组或特定节点的命令和函数。例如:

 kill myarray

还可以KILL特定节点及其子节点。

  • 以下变体设置名为 ^myglobalGlobal数组的几个下标;也就是说,这些值被写入磁盘:
 set ^myglobal(1)="value A"
 set ^myglobal(2)="value B"
 set ^myglobal(3)="value C"
  • global引用的可能长度是有限制的。此限制会影响global名称的长度以及任何下标的长度和数量。如果超出限制,会收到 <SUBSCRIPT> 错误。请参阅global引用的最大长度。
  • 节点值的长度必须小于字符串长度限制。

多维数组为每个定义的节点保留一个存储位置,仅此而已。对于global,它使用的所有磁盘空间都是动态分配的。

结构变化

前面的示例显示了数组的常见形式。请注意以下可能的变化:

可以有任意数量的下标。例如:

 Set myarray(1,1,1)="grandchild of value A"

下标可以是字符串。以下内容有效:

 set myarray("notes to self","2 Dec 2010")="hello world"

使用注意事项

对于学习 ObjectScript 的人来说,一个常见的错误是混淆global和数组。重要的是要记住,任何变量要么是局部变量,要么是Global全局变量,并且可能有也可能没有下标。下表显示了可能性:

Kind of Variable Example and Notes
不带下标的局部变量 Set MyVar=10 像这样的变量很常见。看到的大多数变量可能都是这样的。
带下标的局部变量 Set MyVar(1)="alpha" <br/>Set MyVar(2)="beta"
Set MyVar(3)="gamma"
当想要传递一组相关值时,这样的本地数组非常有用。
不带下标的Global全局变量 ^MyVar="saved note" 在实践中,Global全局变量通常有下标。
带下标的Global全局变量 Set ^MyVar($USERNAME,"Preference 1")=42
讨论 (0)1
登录或注册以继续