Menu
Coddy logo textTech

when com múltiplos valores

Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy. Lição 39 de 56.

Uma única cláusula when pode corresponder a qualquer um de vários valores, separados por vírgulas. A ramificação é acionada se o sujeito for igual a qualquer um deles.

day = "Sat"
kind = case day
       when "Sat", "Sun"                          then "weekend"
       when "Mon", "Tue", "Wed", "Thu", "Fri"  then "weekday"
       end
puts kind   # fim de semana

Isso é muito mais limpo do que encadear || em um if/elsif.

Você também pode misturar tipos de valores em um único when: strings, ranges, padrões regex, todos são apenas coisas que respondem a ===:

def describe(x)
  case x
  when 0, nil       then "empty"
  when 1..9         then "small"
  when 10..99       then "medium"
  when /^huge:/i    then "flagged huge"
  end
end

Escolha as formas que tornam cada ramificação fácil de ler com um simples relance.

challenge icon

Desafio

Fácil

Leia um único caractere (uma linha de entrada). Use um case com ramificações when de múltiplos valores para imprimir um dos seguintes:

  • vowel: a entrada é um de a, e, i, o, u (insensível a maiúsculas/minúsculas, converta a entrada para minúsculas primeiro)
  • digit: a entrada é um de 0..9 (use um intervalo)
  • punctuation: a entrada é um de ., ,, !, ?
  • other: qualquer outra coisa

Trate a entrada como uma string de um único caractere. Teste o branch de dígitos usando um intervalo como "0".."9".

Para a entrada E o resultado é vowel; para 7 é digit; para ! é punctuation.

Experimente você mesmo

ch = gets.chomp

# TODO: case ch.downcase ... com ramos when de múltiplos valores
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Compilador de Ruby online