それはC#で可能であるようですが、C++とできればクロスプラットフォームでそれが必要です。
基本的に、私はものを単一の基準でソートし、それ以外のすべてのデフォルト処理にフォールバックするスイッチを持っています。
いう:
switch(color)
{
case GREEN:
case RED:
case BLUE:
Paint();
break;
case YELLOW:
if(AlsoHasCriteriaX)
Paint();
else
goto default;
break;
default:
Print("Ugly color, no Paint.")
break;
}
完全ではありませんが、これを行うことができます:
switch(color)
{
case GREEN:
case RED:
case BLUE:
Paint();
break;
case YELLOW:
if(AlsoHasCriteriaX) {
Paint();
break; /* notice break here */
}
default:
Print("Ugly color, no Paint.")
break;
}
またはこれを行うことができます:
switch(color)
{
case GREEN:
case RED:
case BLUE:
Paint();
break;
case YELLOW:
if(AlsoHasCriteriaX) {
Paint();
break; /* notice break here */
}
goto explicit_label;
case Fuchsia:
PokeEyesOut();
break;
default:
explicit_label:
Print("Ugly color, no Paint.")
break;
}
Ahmedの答えは良いですが、次のようなものもあります。
switch(color)
case YELLOW:
if(AlsoHasCriteriaX)
case GREEN:
case RED:
case BLUE:
Paint();
else
default:
Print("Ugly color, no Paint.");
人々はスイッチがどれほど強力であるかを忘れがちです