我在互联网上找到了一段代码,它的目标非常简单,但它使用了一种丑陋的方法。假设,作者正在使用 switch case 来确定先前定义的 Enum 的一些(非连续)值是否属于它们的范围。如果是,则函数返回true
,仅此而已。否则,它返回false
.
它实际上看起来像这样:
switch(value) {
case ONE:
case TWO:
/* many similar lines later */
case TWENTY:
case TWENTY_FIVE:
/* an afternoon later */
case ONE_HUNDRED:
return true;
default:
return false;
}
由于编译器生成的跳转表,他们使用 switch case 是合理的(即使跳转表不一定意味着从我收集的内容中即时查找)。即便如此,这也会产生无数不必要的代码行。
我已经阅读了有关函数内联和使用函数指针数组的信息,但我不知道如何在这种特定情况下使用它。
我如何避免用这样一个简单的案例(没有双关语)写很多行case X:
?