数组声明

语法

数组声明的语法很简单。除了在变量名之后应标以指定数组各维度的大小外,语法与正常变量声明是相同的。数组声明的一般形式为:

VariableType varName[dim1, dim2, ..., dimN];

其中VariableType是一个Modelica类型,如:RealIntegervarName为变量名称。

整数大小

通常情况下,维度定义仅仅是表明该维度的大小的整数。例如:

Real x[5];

在这种情况下,x是实数型数组。而这个数组仅有大小为5的一个维度。使用参数或常量去指定数组大小也是可以的,如:

parameter Integer d1=5;
constant Integer d2=2;
Real x[d1, d2];

相关维度

在后面讨论Modelica内的数组函数时,我们就会看到,我们甚至可以使用size函数去用一个数组的大小定义另外一个的大小。请考虑以下声明:

Real x[5];
Real y[size(x,1)];

在这种情况下,y将拥有大小为5的一个维度。函数size(x,1)会返回数组x1维度的大小。在许多应用里,以这种方式表达不同数组维度间的关系是很有用的(例如,为确保数组总有正确的大小以进行矩阵乘法等操作)。

未定义维度

一些情况下,我们可以不定义数组的大小,让其大小可以在后来的某些情景里确定。例如,我们会在讨论一些有向量参数的函数时看到这样的例子。

为了表明数组某个特定维数的大小(还)仍为未知,我们可以使用符号作为维度的大小。所以,在如下的声明里:

Real A[:,2];

我们定义了一个二维数组。第一维的大小没有被定义。而第二维的大小明确被指定为2。实际上,我们已经声明了A为一个行数不详而有两列的矩阵。

非整数维度

枚举类

正如我们在化学系统例子内看到的,另一种指定维度的方法是用枚举。如果用枚举指定一个维度,则该维度的大小将等于该枚举可能值的总数目。在即将到来的关于数组索引的讨论里,我们将看到正确地索引一个使用枚举作为维数的数组。

布尔值

我们还可以将其中一个维度声明为Boolean,例如:

Real x[Boolean];