Uma condicional ternária é uma forma mais curta de escrever instruções if/else simples.
Se uma instrução if/else contiver apenas dois blocos, um para quando a condição for verdadeira e outro para quando for falsa, ela pode ser reescrita como uma condicional ternária.
As ternárias usam uma combinação dos símbolos ? e : para dividir uma condicional:
condition ? true_branch : false_branch
O código do lado esquerdo do ? é a condição, e o código do lado direito contém os dois blocos possíveis, separados pelo :.
Se a condição for verdadeira, o código do lado esquerdo do : é executado.
Se a condição for falsa, o código à direita do : é executado.
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, você vai criar as regras para o site de um cinema.
O cinema oferece um desconto para aposentados. Quem tem 60 anos ou mais paga 10,00 pelo ingresso. Quem for mais jovem paga o valor integral de 15,00.
Escreva o método Moviegoer#ticket_price usando uma expressã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 você tem 18 anos ou mais, pode assistir a filmes de terror. Se for mais jovem, não pode.
Implemente o método Moviegoer#watch_scary_movie?.
Ele deve retornar se a pessoa pode ou não assistir ao filme.
Moviegoer.new(21).watch_scary_movie?
#=> true
Moviegoer.new(17).watch_scary_movie?
#=> false
O cinema tem o programa Clube de Cinema. Os membros ganham pipoca grátis ao assistir a qualquer filme.
Implemente o método Moviegoer.claim_free_popcorn!.
Se o espectador for membro do Clube de Cinema, deve ganhar sua pipoca 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 você defina a exceção UnsupportedOperation para um escopo específico.
Crie sua conta no Exercism para aprender e dominar Ruby com 21 conceitos121 exercícios e mentoria humana de verdade, tudo de graça.