案例陈述执行步骤

时间:2015-04-30 01:04:32

标签: ada

我有以下案例陈述:

A = 1

case A is                      
    when 1          => A = 2;
                    => Run;      
    when 3 .. 15    => null;   
    when 16 | 17    => Jump;    
    when 2 | 18..35 => Swing;     
    when others     => Nothing; 
end case;

因此,case语句将转到1,因为A初始化为1.A将等于2,然后代码将执行Run。此时代码是否退出case语句,或者是否因为A被更改为值2而执行Swing?

1 个答案:

答案 0 :(得分:4)

根据standard, section 5.4,只会执行第一个when分支:

  

case语句的执行选择了一个且只有一个替代方案,因为这些选择是详尽且相互排斥的。

逻辑上,这也是有道理的,因为A语句标题中的case可以是任何表达式,不一定是单个变量。如果更改导致case表达式更改的状态可能导致选择其他分支,则代码将变得更难以遵循(并且语言将成为实现的噩梦)。