Un condicional ternario es una forma más corta de escribir instrucciones if/else sencillas.
Si una instrucción if/else contiene solo dos ramas, una para cuando la condición es verdadera y otra para cuando es falsa, se puede reescribir como un condicional ternario.
Los ternarios usan una combinación de los símbolos ? y : para dividir un condicional:
condition ? true_branch : false_branch
El código a la izquierda del ? es la condición y el código a la derecha contiene las dos ramas posibles, separadas por el :.
Si la condición es verdadera, se ejecuta el código a la izquierda del :.
Si la condición es falsa, se ejecuta el código a la derecha del :.
Por ejemplo:
if traffic_light == 'green'
cross_the_road
else
wait
end
se puede reescribir como:
traffic_light == 'green' ? cross_the_road : wait
En este ejercicio vas a crear las reglas para la web de un cine.
El cine ofrece un descuento para los «jubilados». Cualquier persona de 60 años o más paga 10,00 por la entrada. Las personas más jóvenes pagan los 15,00 completos.
Escribe el método Moviegoer#ticket_price usando el operador ternario.
Moviegoer.new(21).ticket_price
#=> 15
Moviegoer.new(65).ticket_price
#=> 10
El cine tiene un sistema simplificado de verificación de edad. Si tienes 18 años o más, puedes ver películas de miedo. Si eres más joven, no puedes.
Implementa el método Moviegoer#watch_scary_movie?.
Debe devolver si alguien puede ver la película o no.
Moviegoer.new(21).watch_scary_movie?
#=> true
Moviegoer.new(17).watch_scary_movie?
#=> false
El cine tiene un programa llamado Movie Club. Los socios reciben palomitas gratis cuando ven cualquier película.
Implementa el método Moviegoer.claim_free_popcorn!.
Si quien ve la película es socio del club, debe recibir sus palomitas gratis.
Si no lo es, el método debe lanzar la excepción UnsupportedOperation definida al principio del código.
Moviegoer.new(21, member: true).claim_free_popcorn!
#=> 🍿
Moviegoer.new(17, member: false).claim_free_popcorn!
#=> Exception was raised! (NotMovieClubMemberError)
En este ejercicio, se espera que definas la excepción UnsupportedOperation para un scope concreto.
Regístrate en Exercism para aprender y dominar Ruby con 21 conceptos121 ejercicios y mentoría humana real, todo gratis.