Mumps 语言中使用的数组和我们在其他高级语言中使用的数组还不太一样。
Mumps 使用的是关联数组,简单来说就是 Mumps 的数组把其他语言中可能用到的集合全部都柔和在一起了。
在计算机科学中,关联数组(英语:Associative Array),又称映射(Map)、字典(Dictionary)是一个抽象的数据结构,它包含着类似于(键,值)的有序对。一个关联数组中的有序对可以重复(如C++中的multimap)也可以不重复(如C++中的map)。
所以,我们可以认为 mumps 中的数组是一个集合的总称。
下标问题
正常来说,对于 Java 语言中定义的数组,我们都会使用从 0 开始的整数下标。
但是 mumps 不一样,mumps 的数组大致定义的其实就是一个 Map。
你当然可以使用 0,这样的整数来定义下标,但同时还可以使用 字符串为下标。
换句话说,我们就是定义了一个 map,普通类型的数组在 mumps 中是不存在的。
考察下面的代码:
s strArray(1)="Doe, John"
s strArray(2)="Smith, Tom"
s strArray("a")="akhjdsfiouz"
s strArray("b")="klIuwerwk"
s strArray("中文")="简体中文"
w !,strArray(1)
w !,strArray("a")
w !,strArray("中文")
从上面的代码我们可以知道的是,在我们定义 mumps 的数组的时候,我们可以往数组里面塞进去不同的数据类型。
同时 mumps 的数组也能够支持中文,换句话说能够支持 Unicode。
数组访问不存在的下标
我们在这里如果访问一个数组的下标,实际上我们应该可以用词 Key 来定义。
如果这个 Key 不存在的话,程序会报错。
同样上面的代码,我们尝试访问下面的内容:
w !,strArray("中")
程序会在这里出现一个未定义的错误。
key 为空的问题
Mumps 的数组是不能运行 key 为空的情况。
如下面的代码:
s strArray("")="Doe, John"
我们在运行的时候就已经提示了 Subscript 1 is “” 错误。
总结
本文对 Mumps 的数组进行了一个小的说明。
如果你是从其他高级语言转过来学习的话,需要注意 Mumps 有关数组的定义的问题,Mumps 的数组和我们的高级语言数组是不同的定义。