|
三項演算子を使ったswitch
最初に、次のような関数を見てみます。引数によって返す値が変わります。ここでは戻り値は、switch文を使って代入しています。
#define COL_NONE (0)
#define COL_BLUE (1)
#define COL_RED (2)
#define COL_YELLOW (3)
#define SEASON_SPRING (1)
#define SEASON_SUMMER (2)
#define SEASON_AUTUMN (3)
#define SEASON_WINTER (4)
int GetColor(int season)
{
int color;
switch (season)
{
case SEASON_SUMMER:
color = COL_RED;
break;
case SEASON_WINTER:
color = COL_BLUE;
break;
default:
color = COL_YELLOW;
break;
}
return color;
}
|
このようなswitch文を使った代入文は、三項演算子を使って、次のように書き換えることができます。
#define COL_NONE (0)
#define COL_BLUE (1)
#define COL_RED (2)
#define COL_YELLOW (3)
#define SEASON_SPRING (1)
#define SEASON_SUMMER (2)
#define SEASON_AUTUMN (3)
#define SEASON_WINTER (4)
int GetColor(int season)
{
int color;
color = (season == SEASON_SUMMER) ? COL_RED :
(season == SEASON_WINTER) ? COL_BLUE : COL_YELLOW;
return color;
}
|
三項演算子を2つ使って、3パターンの代入をしているわけです。このほうがswitch文を使うよりもスマートな書き方になりますよね。
この方法で何パターンの代入でも三項演算子で記述できますが、あまり多くなると、かえってプログラムが読みにくくなるので、この書き方をするのは、3パターン以下の場合にとどめておいたほうがよいでしょう。それより多い場合は、switch文を使ったほうが読みやすくなります。
|