Modelica 类的变量是按对象实例化的。
谁能澄清这个说法?
首先Modelica只有一种类型的对象,即类,而其他对象(模型、记录、包)只是有限制的特殊类型的类。这意味着每个对象都必须遵循相同的规则,因此我将引用对象类,但我将编写的内容将适用于每个 Modelica 对象。变量是按对象实例化的,这意味着如果您有一个 Modelica 类,如下所示:
partial class MySimpleClass
Real variable1;
equation
variable1 = time;
end MySimpleClass;
当您在instanceOfTypeMySimpleClass中声明成员变量(例如MySimpleClass )时:
class mySecondClass
MySimpleClass instanceOfTypeMySimpleClass;
MySimpleClass instanceTwoOfTypeMySimpleClass;
Real variable1;
equation
variable1 = instanceOfTypeMySimpleClass.variable1;
instanceTwoOfTypeMySimpleClass.variable1 = 3;
end mySecondClass;
你声明一个实例变量。每次创建类的实例时,Modelica 编译器都会为该实例创建每个类的实例变量的副本,这是由对象完成的。您可以使用语法从对象访问对象的实例变量<instanceName>.<VariableName>
。
Modelica 编译器为每个实例分配一次类变量。Modelica 编译器每次遇到该类的实例时都会为类变量分配内存。因此,所有实例都没有共享类的类变量的相同副本,例如,Java 中的静态类。换句话说,在这个例子中instanceOfTypeMySimpleClass.variable1和instanceTwoOfTypeMySimpleClass.variable1是两个不同的变量。
“Modelica 类的变量是按对象实例化的。” 旨在描述这种差异。
我希望这会有所帮助,马可