Gli operatori ternari si possono considerare una versione compatta dell'if-else.
Di solito si usano nelle istruzioni di return (ma non solo): basta una sola riga per prendere la decisione, restituendo il valore a sinistra se l'espressione è true e il valore a destra se è false.
Molte espressioni if/else semplici si possono semplificare usando gli operatori ternari.
// this ternary statement
return 5 > 4 ? true : false;
// is equivalent to this if/else
if ( 5 > 4 ) {
return true;
} else {
return false;
}
Quindi, come scegliere tra if-else e ternario? Gli operatori ternari si usano in scenari semplici, dove ti serve solo restituire un valore in base a una condizione e non serve nessun calcolo aggiuntivo. Usa un if-else per tutto il resto: condizioni annidate, espressioni grandi e i casi in cui serve più di una riga per decidere il valore da restituire.
Anche se puoi annidare gli operatori ternari, il codice diventa spesso difficile da leggere. In questi casi, si preferiscono gli if annidati.
// 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;
Gli operatori ternari e le istruzioni if/else sono un buon esempio del fatto che, programmando, ci sono modi diversi per ottenere lo stesso risultato.