Menu
Coddy logo textTech

Case con clases y Regex

Parte de la sección Lógica y flujo del Journey de Ruby de Coddy. Lección 38 de 56.

Has usado case con rangos. La misma sentencia también coincide con clases y expresiones regulares: ambas a través del operador === que when llama internamente.

Coincide por clase para ramificar según qué tipo de valor obtuviste:

def describe(value)
  case value
  when Integer then "a whole number"
  when Float   then "a decimal"
  when String  then "some text"
  else              "something else"
  end
end

puts describe(42)      # un número entero
puts describe(3.14)    # un decimal
puts describe("hi")    # algo de texto

Compara con una expresión regular para ramificar según la forma de una cadena, un número de teléfono, un correo electrónico o una fecha:

def kind_of(text)
  case text
  when /^\d+$/        then "all digits"
  when /@/            then "looks like an email"
  when /^[A-Z]/       then "starts with a capital"
  else                     "other"
  end
end

Esto es mucho más limpio que una cadena de llamadas a is_a? o match? en if/elsif.

challenge icon

Desafío

Fácil

Lee una sola línea de entrada. Usa una instrucción case para imprimir una de estas etiquetas según lo que la entrada parezca:

  • Solo dígitos: number
  • Contiene @: email
  • Comienza con una letra mayúscula: name
  • Cualquier otra cosa: unknown

Comprueba las reglas en el orden listado (así 123 es number, no unknown; kevin@coddy.tech es email; Alice es name).

Para la entrada kevin@coddy.tech, la salida es email.

Pruébalo tú mismo

input = gets.chomp

# TODO: case input ... when /^\d+$/, /@/, /^[A-Z]/ ... else ... end
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

Practica por tu cuenta: Compilador de Ruby online