# 错误(4781)

# 4781-1

# 错误信息

if 表达式 %1!s! 非法, true 分支不能为输出表达式.

# 产生原因

Modelica 语义规定输出表达式只能出现在等号 (=) 或赋值符号 (:=) 的左边, 而 if 表达式的 true/false 分支的类型必须兼容, 当 true 分支出现输出表达式时, 产生错误 4781.

# 解决方法

将输出表达式改为与等号左边变量兼容的类型.

# 示例

model _4781_1_IllegalIfExprTrueBranch
  Real x;
  Real y;
  Real z;
equation 
  z = if x + y > 7 then (x, y) else 5;           // Error: 4781
  //z = if x + y > 7 then 0 else 5;             // OK
end _4781_1_IllegalIfExprTrueBranch;

# 4781-2

# 错误信息

if 表达式 %1!s! 非法, false 分支不能为输出表达式.

# 产生原因

Modelica 语义规定输出表达式只能出现在等号 (=) 或赋值符号 (:=) 的左边, 而 if 表达式的 true/false 分支的类型必须兼容, 当 false 分支出现输出表达式时, 产生错误 4781.

# 解决方法

将输出表达式改为与等号左边变量兼容的类型.

# 示例

model _4781_2_IllegalIfExprFalseBranch
  Real x;
  Real y;
  Real z;
equation 
  z = if x + y > 7 then 5 else (x, y);                 // Error: 4781
  //z = if x + y > 7 then 5 else 0;                   // OK
end _4781_2_IllegalIfExprFalseBranch;