Menu
Coddy logo textTech

when con múltiples valores

Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 39 de 56.

Una sola cláusula when puede coincidir con cualquiera de varios valores, separados por comas. La rama se ejecuta si el sujeto es igual a cualquiera de ellos.

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

Esto es mucho más limpio que encadenar || en un if/elsif.

También puedes mezclar tipos de valores en un solo when: cadenas, rangos, patrones regex, todos son simplemente cosas que responden 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

Elige las formas que hagan que cada rama sea fácil de leer de un vistazo.

challenge icon

Desafío

Fácil

Lee un solo carácter (una línea de entrada). Usa un case con ramas when de múltiples valores para imprimir uno de los siguientes:

  • vowel: la entrada es una de a, e, i, o, u (insensible a mayúsculas, convierte la entrada a minúsculas primero)
  • digit: la entrada es uno de 0..9 (usa un rango)
  • punctuation: la entrada es uno de ., ,, !, ?
  • other: cualquier otra cosa

Trata la entrada como una cadena de un solo carácter. Prueba la rama de dígitos usando un rango como "0".."9".

Para la entrada E la salida es vowel; para 7 es digit; para ! es punctuation.

Hoja de referencia

Una cláusula when puede coincidir con múltiples valores separados por comas:

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

Puedes mezclar cadenas, rangos y patrones regex en el mismo case:

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

Pruébalo tú mismo

ch = gets.chomp

# TODO: case ch.downcase ... con ramas when de múltiples valores
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo