假设有一个普通的操作员case
case a of
1 : ShowMessage('a=1');
2 : ShowMessage('a=2');
3 : ShowMessage('a=3');
4 : ShowMessage('a=4');
else ShowMessage('no');
end;
是否有可能实现这样的事情:
case a of
1 : ShowMessage('a=1'); b:=10;
2 : ShowMessage('a=2'); b:=20;
3 : ShowMessage('a=3'); b:=30;
4 : ShowMessage('a=4'); b:=40;
else ShowMessage('no');
end;
这里有类似的东西,因为满足条件后a:=1;
,需要给b
变量赋值。
PS 或者你怎么能在不转换case
为的情况下解决这里的情况if
?
对于上面的代码,根本就
case
不需要另一个可能的(并且更短,如果有很多对)选项,如果你有一个声明的类型或值范围
a
,是使用一个常量数组:或几乎相同,但没有记录类型,有 2 个常量数组:
这种解决方案的优点是什么——减少犯错的可能性:
a
(例如,a: TTextAlign;
让我们写PRESET_TEXT: array [a] of string
),那么在添加新值时,编译器将强制您完成所有值。