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 # EligibleÉ o mesmo que escrever:
status = if age >= 18
"Eligible"
else
"Not Eligible"
endUse o ternário quando ambos os ramos retornarem valores curtos. Se qualquer um dos ramos precisar de mais de uma expressão, recorra a um if/else real: colocar conteúdo demais em um ternário torna-o difícil de ler.
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 número 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.
Folha de consulta
O operador ternário é um atalho de uma linha para if/else: condition ? value_if_true : value_if_false
age = 20
status = age >= 18 ? "Eligible" : "Not Eligible" # "Eligible"Ternários podem ser aninhados e usados dentro de interpolação de strings:
count = 5
puts "#{count} item#{count == 1 ? "" : "s"}" # 5 itens
# Ternário aninhado
n = 3
label = n > 0 ? "positive" : (n < 0 ? "negative" : "zero")Use o ternário apenas para ramificações curtas e simples — prefira if/else quando as ramificações precisarem de múltiplas expressões.
Experimente você mesmo
n = gets.to_i
# TODO: use uma expressão ternária para construir o rótulo, depois use 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 a Fundo
Visão Geral de Métodos de StringInterpolação de StringsIterando sobre StringsSplit e JoinRecapitulação - String Weaver4Blocos, Procs e Lambdas
O que é um Bloco?do..end vs ChavesA palavra-chave yieldParâmetros de BlocoProcs e LambdasRecapitulação - Iterador Customizado7Hashes Parte 2
Hash.new com Valores PadrãoIterando em 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 / WhenRecapitulação - Prática com Intervalos5O Poder do Enumerable
Select e RejectEncadeando o MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRecapitulação - Data Pipeline8Tomada de Decisão Avançada
Case com Classes e Regexwhen com múltiplos valoresOperador Ternárioif / unless inlineRecapitulação - Classificador de Notas