_三元運算子_可以想成是 if-else 的精簡版。它通常用在 return 敘述裡(但不限於此),只要一行就能做出判斷:如果運算式是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,例如巢狀條件、大型運算式,或是需要好幾行才能決定回傳值的時候。
雖然_三元運算子_可以巢狀使用,但程式碼往往會變得難以閱讀。這種時候,巢狀的 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 敘述就是個很好的例子,說明寫程式時,同樣的結果可以有不同的達成方式。