Operador ternario
Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 40 de 56.
El operador ternario es un atajo de una sola línea para un if/else que devuelve un valor. La sintaxis es condition ? value_if_true : value_if_false.
age = 20
status = age >= 18 ? "Eligible" : "Not Eligible"
puts status # EligibleEs lo mismo que escribir:
status = if age >= 18
"Eligible"
else
"Not Eligible"
endUsa el operador ternario cuando ambas ramas devuelvan valores cortos. Si alguna de las ramas necesita más de una expresión, recurre a un if/else real: meter demasiado en un ternario hace que sea difícil de leer.
Puedes usarlo directamente dentro de otras expresiones, incluyendo la interpolación:
count = 1
puts "#{count} item#{count == 1 ? "" : "s"}" # 1 elemento
count = 5
puts "#{count} item#{count == 1 ? "" : "s"}" # 5 elementosDesafío
FácilLee un entero n de la entrada. Usando el operador ternario (sin bloques if/else), imprime exactamente:
<n> is <label>donde label es:
positivecuandon > 0negativecuandon < 0zerocuandon == 0
Sugerencia: usa un ternario anidado, condition ? a : (other_condition ? b : c).
Para la entrada 5 la salida es 5 is positive. Para 0 es 0 is zero.
Hoja de referencia
El operador ternario es un atajo de una sola línea para if/else: condition ? value_if_true : value_if_false
age = 20
status = age >= 18 ? "Eligible" : "Not Eligible" # "Eligible"Los ternarios pueden anidarse y usarse dentro de la interpolación de cadenas:
count = 5
puts "#{count} item#{count == 1 ? "" : "s"}" # 5 items
# Ternario anidado
n = 3
label = n > 0 ? "positive" : (n < 0 ? "negative" : "zero")Usa el ternario solo para ramas cortas y simples — prefiere if/else cuando las ramas necesiten múltiples expresiones.
Pruébalo tú mismo
n = gets.to_i
# TODO: usa una expresión ternaria para construir la etiqueta, luego puts
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Strings en profundidad
Visión general de los métodos de StringInterpolación de StringsIterar sobre StringsSplit y JoinRepaso - String Weaver4Bloques, Procs y Lambdas
¿Qué es un bloque?do..end vs llavesLa palabra clave yieldParámetros de bloqueProcs y LambdasResumen - Iterador personalizado7Hashes Parte 2
Hash.new con valores por defectoIteración de HashesHashes anidadosFusión y transformaciónResumen - Contador de frecuencia10Proyecto - Registros de Estudiantes
Descripción general del proyectoAgregar estudiante5Potencia de Enumerable
Select y RejectEncadenando MapReduce / Injectcount, all?, any?, none?group_by y partitionsort_by, min_by, max_byResumen - Data Pipeline8Toma de decisiones avanzada
Case con clases y Regexwhen con múltiples valoresOperador ternarioif / unless en líneaRepaso - Clasificador de calificaciones