Artículos de Tecnología > Programación

¿Qué es un operador ternario?

Alex Felipe
o-que-e-o-operador-ternario.1643309337" loading="lazy

Al desarrollar una aplicación, es muy común utilizar estructuras condicionales como ifs y elses o switch case. Pero en algún momento de nuestras vidas, probablemente una de estas pruebas que realizamos, es tan simple que arroja un valor para solo dos posibilidades.

Por ejemplo, supongamos que necesitamos crear una función para generar una bonificación y la regla para esta función es la siguiente:

Una solución sería usar un if y else como ya sabemos, por ejemplo en Java:


double salario = 1000; 
double bonus = 0.0;

if (salario > 1000) { bonus = salario * 0.10; }
 else { bonus = salario * 0.15; }

System.out.println(bonus);

En este ejemplo, el resultado es 150,0 porque el salario es inferior a 1000,0, $ es decir, una bonificación del 15%.

Sin embargo, tenga en cuenta que lo que estamos haciendo es solo una prueba muy básica que tiene solo una línea de código dentro del if o else. ¿Hay una forma más sencilla de resolver el mismo problema?

En un escenario similar a este, también podemos usar el operador ternario que funciona con el mismo concepto que if y else, sin embargo, la única diferencia es que necesitamos devolver un valor después de la prueba estrictamente en una sola línea.

double salario = 1000; 
double bonus = salario * (salario > 1000 ? 0.10 : 0.15); 
System.out.println(bonus);

Con este código de arriba tenemos el mismo resultado que antes, es decir, 150.0. Pero, ¿cómo funciona este operador ternario? La estructura de un operador ternario se entiende de la siguiente manera:

¿condición? valor si es verdadero: valor si es falso

Por lo tanto, inicialmente tenemos una prueba (podemos agregar cualquier prueba), es decir, cualquier prueba devuelve un valor booleano, entonces definimos el primer parámetro que es precisamente el valor que devolverá si la prueba es verdadera y el segundo que lo hará. ser devuelto si es falso!

Precisamente porque realiza estas 3 operaciones, lo llamamos operador ternario. ¿Pero esto es solo en Java? ¡No! ¡Varios idiomas implementan esta misma característica! Veamos algunos ejemplos:

C:

double salario = 1000; 
double bonus = salario * (salario > 1000 ? 0.10 : 0.15);

Ruby:

salario = 1000;
bonus = salario * (salario > 1000 ? 0.10 : 0.15);

C#:

double salario = 1000;
double bonus = salario * (salario > 1000 ? 0.10 : 0.15);

JavaScript:

var salario = 1000;
var bonus = salario * (salario > 1000 ? 0.10 : 0.15);

PHP:

$salario = 1000;
$bonus = $salario * ($salario > 1000 ? 0.10 : 0.15);

¡Tenga en cuenta que aunque son idiomas diferentes, el recurso del operador ternario contiene la misma estructura! Sin embargo, en algunos lenguajes de programación tenemos algunas variantes, es decir, el mismo concepto del operador ternario que vimos, pero con algunas diferencias en la sintaxis. Veamos algunos ejemplos:

Lua

 salario = 1000 bonus = salario * (salario > 1000 and 0.10 or 0.15)

fortran

salario = 1000 bonus = salario * merge(0.10, 0.15, salario > 1000)

¿Lo encontraste interesante? Echa un vistazo a la cantidad de operadores ternarios que nos proporciona el lenguaje python para resolver el mismo problema:

salario = 1000

bonus = salario * (lambda:0.15, lambda:0.10)[salario > 1000]()
bonus = salario * (0.15, 0.10)[salario > 1000]
bonus = salario * {True: 0.10, False: 0.15}[salario > 1000] 
bonus = salario * ((salario > 1000) and 0.10 or 0.15)

Sin embargo, siempre es importante recordar que el uso de estas variantes del operador ternario puede ser problemático, ya que dificulta a los desarrolladores que no están acostumbrados o simplemente no lo conocen.

Por lo tanto, le recomendamos que evite usar estas variantes tanto como sea posible. ¿Qué opinas del operador ternario? ¿Estás listo para usarlo en tu próximo algoritmo?

¿Quieres aprender más sobre programación? ¡En Alura tenemos varios cursos de programación online en diferentes idiomas! Como, por ejemplo, nuestros cursos de lógica con JavaScript y muchos otros.

Álex Felipe Víctor Vieira Alex es instructor y desarrollador y tiene experiencia en Java, Kotlin, Android. Creador de más de 40 cursos como Kotlin, Flutter, Android, persistencia de datos, comunicación de API web, personalización de pantalla, pruebas automatizadas, arquitectura de aplicaciones y Firebase. Es experto en Programación Orientada a Objetos, siempre con el objetivo de compartir las mejores prácticas y tendencias en el mercado de desarrollo de software. Trabajó durante 2 años como editor de contenidos en el blog de Alura y hoy sigue escribiendo artículos técnicos.

Puedes leer también:

Artículos de Tecnología > Programación

En Alura encontrarás variados cursos sobre Programación. ¡Comienza ahora!

Precios en:
USD
  • USD
  • BOB
  • CLP
  • COP
  • USD
  • PEN
  • MXN
  • UYU

Semestral

  • 273 cursos

    Cursos de Programación, Front End, Data Science, Innovación y Gestión.

  • Videos y actividades 100% en Español
  • Certificado de participación
  • Estudia las 24 horas, los 7 días de la semana
  • Foro y comunidad exclusiva para resolver tus dudas
  • Luri, la inteligencia artificial de Alura

    Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana

  • Acceso a todo el contenido de la plataforma por 6 meses
US$ 65.90
un solo pago de US$ 65.90
¡QUIERO EMPEZAR A ESTUDIAR!

Paga en moneda local en los siguientes países

Anual

  • 273 cursos

    Cursos de Programación, Front End, Data Science, Innovación y Gestión.

  • Videos y actividades 100% en Español
  • Certificado de participación
  • Estudia las 24 horas, los 7 días de la semana
  • Foro y comunidad exclusiva para resolver tus dudas
  • Luri, la inteligencia artificial de Alura

    Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana

  • Acceso a todo el contenido de la plataforma por 12 meses
US$ 99.90
un solo pago de US$ 99.90
¡QUIERO EMPEZAR A ESTUDIAR!

Paga en moneda local en los siguientes países

Acceso a todos
los cursos

Estudia las 24 horas,
dónde y cuándo quieras

Nuevos cursos
cada semana