Los operadores ternarios se pueden entender como una versión compacta de if-else.
Normalmente se usan en las instrucciones return (aunque no están restringidos a ellas): basta con una sola línea para tomar la decisión, devolviendo el valor de la izquierda si la expresión es true y el valor de la derecha si es false.
Muchas expresiones if/else sencillas se pueden simplificar usando operadores ternarios.
// this ternary statement
return 5 > 4 ? true : false;
// is equivalent to this if/else
if ( 5 > 4 ) {
return true;
} else {
return false;
}
Entonces, ¿cómo decidir entre if-else y ternario? Bueno, los operadores ternarios se usan en escenarios sencillos, en los que solo necesitas devolver un valor basado en una condición y no hace falta ningún cálculo adicional. Usa un if-else para todo lo demás, como condiciones anidadas, expresiones grandes y casos en los que necesitas más de una línea para decidir el valor devuelto.
Aunque puedes anidar operadores ternarios, el código suele volverse difícil de leer. En estos casos, es preferible usar if anidados.
// 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;
Los operadores ternarios y las instrucciones if/else son un buen ejemplo de que al programar tienes distintas formas de lograr el mismo resultado.