Un condizionale ternario è un modo più breve per scrivere semplici istruzioni if/else.
Se un'istruzione if/else contiene solo due rami, uno per quando la condizione è vera e uno per quando è falsa, può essere riscritta come condizionale ternario.
I ternari usano una combinazione dei simboli ? e : per separare un condizionale:
condition ? true_branch : false_branch
Il codice a sinistra del ? è la condizione, mentre il codice a destra contiene i due rami possibili, separati dal :.
Se la condizione è vera, viene eseguito il codice a sinistra del :.
Se la condizione è falsa, viene eseguito il codice a destra del :.
Ad esempio:
if traffic_light == 'green'
cross_the_road
else
wait
end
può essere riscritto così:
traffic_light == 'green' ? cross_the_road : wait
In questo esercizio costruirai le regole per il sito web di un cinema.
Il cinema offre uno sconto per la «pensione di vecchiaia». Chi ha 60 anni o più paga 10.00 per un biglietto. Chi è più giovane paga l'intero prezzo di 15.00.
Scrivi il metodo Moviegoer#ticket_price usando un operatore ternario.
Moviegoer.new(21).ticket_price
#=> 15
Moviegoer.new(65).ticket_price
#=> 10
Il cinema ha un sistema semplificato di verifica dell'età. Se hai 18 anni o più, puoi guardare i film horror. Se sei più giovane, non puoi.
Implementa il metodo Moviegoer#watch_scary_movie?.
Deve restituire se una persona è autorizzata a guardare il film oppure no.
Moviegoer.new(21).watch_scary_movie?
#=> true
Moviegoer.new(17).watch_scary_movie?
#=> false
Il cinema ha un programma chiamato Movie Club. I membri ricevono i popcorn gratis quando guardano qualsiasi film.
Implementa il metodo Moviegoer.claim_free_popcorn!.
Se lo spettatore è membro del Movie Club, deve ricevere in premio i suoi popcorn gratis.
Se non lo è, il metodo deve sollevare l'eccezione UnsupportedOperation definita all'inizio del codice.
Moviegoer.new(21, member: true).claim_free_popcorn!
#=> 🍿
Moviegoer.new(17, member: false).claim_free_popcorn!
#=> Exception was raised! (NotMovieClubMemberError)
In questo esercizio, devi definire l'eccezione UnsupportedOperation per uno scope specifico.
Iscriviti a Exercism per imparare e padroneggiare Ruby con 21 concetti121 esercizi e il mentoring di persone reali, tutto gratis.