【问题标题】:Modelica : variables of class during instantiationModelica:实例化期间类的变量
【发布时间】:2013-11-27 19:15:15
【问题描述】:

Modelica 类的变量是按对象实例化的。

谁能澄清这个说法?

【问题讨论】:

    标签: modelica openmodelica


    【解决方案1】:

    首先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.variable1instanceTwoOfTypeMySimpleClass.variable1 是两个不同的变量。

    “Modelica 类的变量是按对象实例化的。”旨在描述这种差异。

    我希望这会有所帮助, 马可

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-01
      • 2020-06-08
      • 1970-01-01
      • 2017-02-15
      • 2016-11-17
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      相关资源
      最近更新 更多