嵌套开关是一个选项……
这使用两个开关,但第二个没有在默认情况下触发,因此比两个内嵌开关具有稍好的性能配置文件.
switch($x) {
case a: case b: case c:
executeSth();
switch($x) {
case a:
executeA();
break;
case b:
executeB();
break;
case c:
executeC();
break;
}
break;
default:
...
}
或者,可变函数可以完成工作……
这是一个可以使用的PHP选项,尽管很多人不喜欢变量函数.如果你想完全删除嵌套和放大,这可能是最好的选择.重复.
switch($x) {
case a:
$function = "executeA";
break;
case b:
$function = "executeB";
break;
case c:
$function = "executeC";
break;
default:
...
}
if(isset($function)) {
executeSth();
$function();
}
我还做了一点live test bed here,如果有人想在发布之前测试他们的PHP解决方案工作(情况10应该是executeSth()和executeA(),情况20应该是executeSth()和executeB(),默认应该是executeDefault()) .
在C中,您可以使用函数指针实现与上面相同的操作
当我写这篇文章的时候,我有一个完全的大脑放屁,谢天谢地提醒我,我们可以使用一个简单的函数指针来做到这一点.
// Declare function pointer
int (*functionCall)() = NULL;
// In switch statement, assign something to it
functionCall = &execute;
// After the switch statement, call it
int result = (*functionCall)();
注意:我出去所以没有检查这些语法.我使用的语法是C语法,可能需要一些小的更改才能在C中工作.