MiniZinc 中的 Switch 语句

Switch statements in MiniZinc

MiniZinc tutorial中,我注意到endif关键字在一系列条件语句的末尾重复了很多次。是否可以在 MiniZinc 中编写 switch 语句来替代这种冗长的语法?

比如我想把这一系列的条件语句写得更简洁:

predicate examplePredicate(var int:x, int:s) =
if s == 1
    % some code goes here
else if s == 2 then
    % some code goes here
else if s == 3 then
    % some code goes here
else if s == 4 then
    % some code goes here
else
    % some code goes here
endif endif endif endif;

不需要多个"endif"。您可以使用 "elseif" 而不是 "else if"。

predicate examplePredicate(var int:x, int:s) =
  if s == 1
     % some code goes here
elseif s == 2 then
     % some code goes here
elseif s == 3 then
     % some code goes here
elseif s == 4 then
     % some code goes here
else
     % some code goes here
endif;

注意:如果您想要(简单的)查找 table,您可以改用全局约束 "table"。有关示例,请参阅 MiniZinc 教程中的第 4.1.3 节。