第九章 ObjectScript - 多维数组
多维数组
在 ObjectScript
中,任何变量都可以是多维数组(也称为数组)。多维数组通常用于保存一组以某种方式相关的值。 ObjectScript
提供的命令和函数可以方便、快速地访问值。
可能会也可能不会直接使用多维数组,具体取决于使用的系统类和自己的偏好。当需要一个用于存储相关值集的容器时,IRIS
提供了一种基于类的替代方案。请参阅集合类。
Basics
多维数组由任意数量的节点组成,由下标定义。以下示例设置数组的几个节点,然后打印数组的内容:
set myarray(1)="value A"
set myarray(2)="value B"
set myarray(3)="value C"
zwrite myarray
此示例显示了一个典型的数组。
- 该数组有一个下标。在这种情况下,下标是整数
1
、2
和3
。 - 不需要提前声明数组的结构。
-
myarray
是数组本身的名称。 -
ObjectScript
提供可作用于整个数组或特定节点的命令和函数。例如:
kill myarray
还可以KILL
特定节点及其子节点。
- 以下变体设置名为
^myglobal
的Global
数组的几个下标;也就是说,这些值被写入磁盘:
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 |
网友评论