首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部分模型数组

部分模型数组
EN

Stack Overflow用户
提问于 2015-04-02 23:56:38
回答 2查看 447关注 0票数 0

A是部分模型,CD是扩展A的模型。给出一个模型

代码语言:javascript
复制
partial model X
  A a[3];
end X;

我如何实例化X,例如沿着

代码语言:javascript
复制
A X.a = {C,D,C};

更新:我尝试了两个变体。一个是

代码语言:javascript
复制
package P
  partial model A end A;
  model B extends A; end B;
  model C extends A; end C;
  partial model X
    A a[3];
  end X;
  model Y extends X(a={c,b,c});
    B b;
    C c;
  end Y;
end P;

如果警告"May只设置默认输入、参数和变量,但修改了a“,则会失败。另一个是

代码语言:javascript
复制
package P
  partial model A end A;
  model B extends A; end B;
  model C extends A; end C;
  partial model X
    replaceable A a[3];
  end X;
  model Y extends X;
    redeclare A a={c,b,c};
    B b;
    C c;
  end Y;
end P;

它失败的错误“组件a= {c,b,c},但以前a= <<空>>。组件是不相同的。”

请注意,可以执行以下操作。

代码语言:javascript
复制
package P
  partial model A end A;
  model B extends A; end B;
  model C extends A; end C;
  partial model X
    A a[3] = {a1,a2,a3};
    replaceable A a1,a2,a3;
  end X;
  model Y extends X;
    redeclare B a1;
    redeclare C a2;
    redeclare B a3;
  end Y;
end P;

但我希望P.X使用参数数组。再一次,下面的想法来实现这一点,是行不通的。

代码语言:javascript
复制
package P
  partial model A end A;
  model B extends A; end B;
  model C extends A; end C;
  partial model X
    parameter Integer N;
    replaceable A a[N] = fill(ai,N);
    A ai;
  end X;
  model Y extends X(N=3);
    redeclare A a[3] = {b,c,b};
    B b;
    C c;
  end Y;
end P;
EN

回答 2

Stack Overflow用户

发布于 2015-04-03 09:36:47

是。实例化部分模型而不从非部分模型扩展它是非法的。像这样的东西可能会起作用:

代码语言:javascript
复制
model Y
  extend X(a = {C, D, C});
end Y;

那就是你想要的。

票数 2
EN

Stack Overflow用户

发布于 2015-04-03 07:31:00

阿法克 a partial关键字意味着您的模型无法实例化,因此您可能也必须使用extend X。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29424371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档