三項演算子_は、if/else文_を簡潔にしたものと考えることができます。ふつうはreturn文で使われますが、それに限った話ではありません。1行だけで判断でき、式がtrueなら左の値、falseなら右の値を返します。
単純な_if/else文_の多くは、_三項演算子_を使って簡潔に書けます。
// this ternary statement
return 5 > 4 ? true : false;
// is equivalent to this if/else
if ( 5 > 4 ) {
return true;
} else {
return false;
}
では、_if/else文_と_三項演算子_のどちらを使えばよいのでしょうか? 三項演算子_は、条件に基づいて値を返すだけで、それ以上の計算が不要な単純な場面で使います。それ以外の場合はif/else文_を使いましょう。入れ子になった条件、大きな式、戻り値を決めるのに1行以上必要なときなどです。
_三項演算子_は入れ子にできますが、コードが読みにくくなることがよくあります。そういうときは、入れ子のifのほうが好まれます。
// hard to read
int value = expr1 ? expr2 && expr3 ? val1 : (val2 + val3) : expr4;
// easier to read
if (expr1){
if (expr2 && expr3){
return val1;
}
return val2 + val3;
}
return val4;
三項演算子_とif/else文_は、プログラミングでは同じ結果を得る方法が複数あるという良い例です。