我发现自己经常遇到这种情况,想知道是否有 Java 或 C++ 或任何其他语言可以让您在 switch 中执行多个 case 语句通用的代码,但也专门用于个别情况也是如此,例如:
switch(var)
{
case Preceeding:
{
// code executed for both FollowingA and FollowingB
}
break;
case FollowingA:
{
// code executed for only FollowingA
}
break;
case FollowingB:
{
// code executed for only FollowingB
}
break;
}
不必这样做:
switch(var)
{
case FollowingA:
case FollowingB:
{
// code executed for FollowingA and FollowingB
switch(var)
{
case FollowingA:
{
// code executed for FollowingA
}
break;
case FollowingB:
{
// code executed for FollowingB
}
break;
}
}
break;
}
最佳答案
这实际上取决于您尝试做什么 - 不仅仅是从“您能做到这一点”的角度来看,而且您还必须关心您或其他人稍后必须阅读和理解代码这一事实。
我通常发现,如果有一些事情需要在一个以上的 switch 情况下完成,它应该进入一个函数(大多数编译器会内联这样的代码,如果它足够小,所以没有性能损失).
所以:
void CommonCode()
{
...
}
switch(var)
{
case A:
CommonCode();
...
break;
case B:
CommonCode();
...
break;
}
然而,这个问题有很多不同的解决方案,它确实应该遵循“你的代码的含义是什么”来指导你如何解决这个问题。编写清晰的代码是主要目标。如果这不起作用,请设计不同的代码。
关于Java/C++ : possible to have common code for multiple cases in switch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23152467/