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. O ramo é acionado 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   # weekend

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

Você também pode misturar tipos de valores em um when: strings, intervalos, 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 tornem cada branch fácil de ler rapidamente.

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 e 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 ramo digit usando um intervalo como "0".."9".

Para a entrada E a saída é vowel; para 7 é digit; para ! é punctuation.

Folha de consulta

Uma cláusula when pode corresponder a múltiplos valores separados por vírgulas:

case day
when "Sat", "Sun" then "weekend"
when "Mon", "Tue", "Wed", "Thu", "Fri" then "weekday"
end

Você pode misturar strings, intervalos e padrões regex no mesmo case:

case x
when 0, nil    then "empty"
when 1..9      then "small"
when /^huge:/i then "flagged huge"
end

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