在不声明记录实例的情况下访问Modelica中的记录参数
在Modelica中,我可以访问记录实例的内容,如下所示:在不声明记录实例的情况下访问Modelica中的记录参数,modelica,Modelica,在Modelica中,我可以访问记录实例的内容,如下所示: model Unnamed1 record Example parameter Real x = 5; end Example; Example ex; Real test; equation test = ex.x; end Unnamed1; 但是,我希望在不声明记录实例的情况下访问该记录的内容,如下所示: model Unnamed1 record Example parameter
model Unnamed1
record Example
parameter Real x = 5;
end Example;
Example ex;
Real test;
equation
test = ex.x;
end Unnamed1;
但是,我希望在不声明记录实例的情况下访问该记录的内容,如下所示:
model Unnamed1
record Example
parameter Real x = 5;
end Example;
Real test;
equation
test = Example().x;
end Unnamed1;
…但这不起作用。有什么方法可以实现我想做的吗?这是不可能的(即使从语法的角度来看)。点(.)的右侧需要是类或组件引用。您只能通过点符号访问包中的常量/参数
package X
constant Real x = 1;
end X;
model M
Real x = X.x
end M;
是的,在模型中没有实际的实例是可能的,但是它需要一些额外的代码
model Unnamed1
record Example
parameter Real x = 5;
end Example;
function getX
input Example r;
output Real x;
algorithm
x:=r.x;
end getX;
Real test;
equation
test = getX(Example());
end Unnamed1;
(我知道函数中有实例是在作弊,但是……)
另一个选择是
for r in {Example()} loop
test=r.x;
end for;
(根据允许)感谢您的回复。然而,我要澄清的是:我试图做的是在不声明实例的情况下访问记录的内容。是否使用点符号或其他符号并不特别重要。不管怎样,你是说这是不可能的吗?