我有以下案例陈述:
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?
答案 0 :(得分:4)
根据standard, section 5.4,只会执行第一个when
分支:
case
语句的执行选择了一个且只有一个替代方案,因为这些选择是详尽且相互排斥的。
逻辑上,这也是有道理的,因为A
语句标题中的case
可以是任何表达式,不一定是单个变量。如果更改导致case
表达式更改的状态可能导致选择其他分支,则代码将变得更难以遵循(并且语言将成为实现的噩梦)。