Operador Ternário
Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy. Lição 40 de 56.
O operador ternário é um atalho de uma linha para um if/else que retorna um valor. A sintaxe é condition ? value_if_true : value_if_false.
age = 20
status = age >= 18 ? "Eligible" : "Not Eligible"
puts status # ElegívelÉ o mesmo que escrever:
status = if age >= 18
"Eligible"
else
"Not Eligible"
endUse o operador ternário quando ambos os ramos retornarem valores curtos. Se algum dos ramos precisar de mais de uma expressão, recorra a um if/else real: colocar coisas demais em um operador ternário dificulta a leitura.
Você pode usá-lo diretamente dentro de outras expressões, incluindo interpolação:
count = 1
puts "#{count} item#{count == 1 ? "" : "s"}" # 1 item
count = 5
puts "#{count} item#{count == 1 ? "" : "s"}" # 5 itensDesafio
FácilLeia um inteiro n da entrada. Usando o operador ternário (sem blocos if/else), imprima exatamente:
<n> is <label>onde label é:
positivequandon > 0negativequandon < 0zeroquandon == 0
Dica: use um ternário aninhado, condition ? a : (other_condition ? b : c).
Para a entrada 5, a saída é 5 is positive. Para 0, é 0 is zero.
Experimente você mesmo
n = gets.to_i
# TODO: use uma expressão ternária para construir o label, depois puts
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Strings em Profundidade
Visão Geral dos Métodos de StringInterpolação de StringsPercorrendo StringsDividir e UnirRecapitulação - String Weaver4Blocos, Procs e Lambdas
O que é um Bloco?do..end vs ChavesA Palavra-chave yieldParâmetros de BlocoProcs e LambdasRevisão - Iterador Personalizado7Hashes - Parte 2
Hash.new com Valores PadrãoIterando sobre HashesHashes AninhadosMesclando e TransformandoRecapitulação - Contador de Frequência10Projeto - Registros de Alunos
Visão Geral do ProjetoAdicionar Aluno2Intervalos
O que é um intervalo?Métodos de intervaloIntervalos em Case / WhenRevisão - Prática com intervalos5Potência do Enumerable
Select e RejectEncadeando MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRecapitulação - Pipeline de Dados8Tomada de Decisões Avançada
Case com Classes e Regexwhen com Múltiplos ValoresOperador Ternárioif / unless em uma LinhaRecapitulação - Classificador de NotasPratique por conta própria: Compilador de Ruby online