嵌套switch是一种选择...
这使用了两个开关,但在这种default情况下不会触发第二个开关,因此其性能配置文件比仅使用两个串联开关略好。
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();
}
如果有人想在发布之前测试他们的 PHP 解决方案是否有效(应该和、应该和应该),我还在这里做了一个小现场测试平台。case 10executeSth()executeA()case 20executeSth()executeB()defaultexecuteDefault()
在 C++ 中,可以使用函数指针来实现与上述相同的功能
当我写这篇文章时,我脑子里放了个屁,幸好 idipous 提醒我,我们可以用一个简单的函数指针来做到这一点。
// 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++ 中工作。