早些时候,我们介绍了模型定义的概念。尽管我们尚未见到任何实例,但 Modelica 还包含一种记录类型。记录可以像模型一样拥有变量,但不允许包含方程。记录主要用于将数据组合在一起。但正如我们很快就会看到的那样,它们在描述与注释相关的数据时也非常有用。
语法
记录定义看起来基本上与模型定义类似,但没有任何方程:
record RecordName "Description of the record" // Declarations for record variables end RecordName;
与模型一样,定义始于并止于所定义记录的名称。可以在名称之后添加对该记录的说明(以字符串形式呈现)。与该记录相关的所有变量都在记录定义中进行声明。
以下均是记录定义的示例:
record Vector "A vector in 3D space" Real x; Real y; Real z; end Vector; record Complex "Representation of a complex number" Real re "Real component"; Real im "Imaginary component"; end Complex;
记录构造函数
既然我们已经了解了如何定义记录,那么接下来就需要知道如何创建记录了。如果我们要声明一个恰好是记录类型的变量,那么变量声明本身就会创建该记录的一个实例,并且我们可以通过修改来指定记录内部变量的值,例如:
parameter Vector v(x=1.0, y=2.0, z=0.0);
但在某些情况下,我们可能需要创建一个并非变量的记录实例(例如,用于表达式中、作为函数的参数传递或用于修改操作)。对于每个记录定义,都会自动生成一个与该记录同名的函数。这个函数被称为“记录构造函数”。记录构造函数具有与记录定义内部变量相匹配的输入参数,并返回该记录的一个实例。因此,对于上述的“Vector”定义,我们还可以像下面这样使用记录构造函数来初始化一个参数:
parameter Vector v = Vector(x=1.0, y=2.0, z=0.0);
在这种情况下,变量 v 的值来自于表达式“Vector(x=1.0, y=2.0, z=0.0)”,这是一个对记录构造函数的调用。