Uma condicional ternária é uma forma mais curta de escrever condicionais if/else simples.
Se uma condicional if/else tiver apenas dois ramos, um para quando a condição é verdadeira e outro para quando é falsa, pode ser reescrita como uma condicional ternária.
As condicionais ternárias usam uma combinação dos símbolos ? e : para dividir uma condicional:
condition ? true_branch : false_branch
O código à esquerda do ? é a condição, e o código à direita contém os dois ramos possíveis, separados pelo :.
Se a condição for verdadeira, executa-se o código à esquerda do :.
Se a condição for falsa, executa-se o código à direita do :.
Por exemplo:
if traffic_light == 'green'
cross_the_road
else
wait
end
pode ser reescrito como:
traffic_light == 'green' ? cross_the_road : wait
Neste exercício vais criar as regras para o site de um cinema.
O cinema oferece um desconto para "reformados". Quem tiver 60 anos ou mais paga 10.00 pelo bilhete. Quem for mais novo paga os 15.00 completos.
Escreve o método Moviegoer#ticket_price com uma instrução ternária.
Moviegoer.new(21).ticket_price
#=> 15
Moviegoer.new(65).ticket_price
#=> 10
O cinema tem um sistema simplificado de verificação de idade. Se tiveres 18 anos ou mais, podes ver filmes assustadores. Se fores mais novo, não podes.
Implementa o método Moviegoer#watch_scary_movie?.
Deve devolver se a pessoa tem ou não permissão para ver o filme.
Moviegoer.new(21).watch_scary_movie?
#=> true
Moviegoer.new(17).watch_scary_movie?
#=> false
O cinema tem um programa Movie Club. Os membros recebem pipocas grátis quando veem qualquer filme.
Implementa o método Moviegoer.claim_free_popcorn!.
Se o espectador for membro do Movie Club, deve receber as suas pipocas grátis.
Se não for, o método deve lançar a exceção UnsupportedOperation definida no topo do código.
Moviegoer.new(21, member: true).claim_free_popcorn!
#=> 🍿
Moviegoer.new(17, member: false).claim_free_popcorn!
#=> Exception was raised! (NotMovieClubMemberError)
Neste exercício, espera-se que definas a exceção UnsupportedOperation para um âmbito específico.
Inscreve-te no Exercism para aprenderes e dominares Ruby com 21 conceitos121 exercícios, e mentoria humana real, tudo grátis.