以下Modelica软件包 - 虽然既不特别有用也不感兴趣 - 不会产生任何警告。
var test = function(){
return{
value: "hi",
func1: function(){
func2();
} // <-- no invocation here, make `func1` a method not `undefined`
};
}();
function func2(){
alert(test.value);
}
test.func1(); // "hi"
但是,当package P
connector C
Real c;
end C;
model A
input C x;
output Real y;
equation
y = x.c;
end A;
model B
input C inp;
output C out;
A a;
equation
a.x = inp;
out.c = a.y;
end B;
end P;
不使用连接器时,如下例所示,会出现警告:以下输入缺少绑定等式:A
。显然,a.x
有一个约束方程式。为什么会出现这样的警告?
a.x
答案 0 :(得分:3)
这里的问题是不一个绑定方程。只有一个普通的等式。绑定方程是作为元素的修改而应用的方程,例如
model B
input C inp;
output C out;
A a(x=inp.c) "Binding equation";
equation
out.c = a.y;
end B;
请注意,一般情况下,如果两个连接器是连接器,则不应将它们等同,它们应该连接。这将有助于您避免此问题。所以在你的B
的第一个版本中:
model B
input C inp;
output C out;
A a;
equation
connect(a.x, inp);
out.c = a.y;
end B;
绑定方程限制的原因与确保组件平衡有关。您可以在规范或Modelica by Example中详细了解相关内容。通过使用它作为一个约束方程,它清楚地表明这个方程可用于求解这个变量(即,包含该变量的方程中的项不会消失或生病)。