Mumps 语言中的数组

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 的数组和我们的高级语言数组是不同的定义。