Modelica表达式求值疑问:模型B中rA及模型A中rD的值?
Modelica表达式求值疑问解答
问题1:模型B内的rA求值结果为5还是11?
结论:结果是5。
解释:
Modelica遵循作用域查找规则,嵌套模型B内部未定义rA时,会引用外部模型A中的rA。A中的rA = 1 + rB,这里的rB是A作用域内定义的4,因此rA的计算结果为1+4=5。B内部的rB=10仅作用于B自身的作用域,不会影响外部A中rA的取值。
对应的代码:
model A Real rA = 1 + rB; Real rB = 4; model B Real rB = 10; // Case A : Evaluation of rA = 1 + 4 = 5 // Case B : Evaluation of rA = 1 + 10 = 11 end B; end A;
问题2:模型A内的rD求值结果为5还是11?
结论:结果是5。
解释:
模型B中的rC = rA引用的是外部模型A的rA(B内部无rA定义),而A的rA值由A的rB=4计算得5,因此实例myB的rC值为5。rD = myB.rC自然继承这个值,结果为5。B内部的rB=10不会对A的rA产生影响,所以不会改变最终结果。
对应的代码:
model A Real rA = 1 + rB; Real rB = 4; model B Real rB = 10; Real rC = rA; end B; B myB; Real rD = myB.rC; // What is the result of the evaluation of rD ? // Case A : Evaluation of rD = 1 + 4 = 5 // Case B : Evaluation of rD = 1 + 10 = 11 end A;
内容的提问来源于stack exchange,提问作者Libert KHE
相关产品推荐
相关产品推荐

