case y when en Ruby
Despacho de patrones con ===: rangos, clases y regexps coinciden por igual.
# case compara con ===, así que rangos, clases y regexps funcionan
def describe(value)
case value
when nil then "nothing"
when 1..10 then "small number"
when Integer then "number #{value}"
when /\Arb/ then "starts with rb"
when String then "#{value.length} characters"
else "unknown"
end
end
puts describe(nil)
puts describe(7)
puts describe(42)
puts describe("rbenv")
puts describe("typestar")
Cómo funciona
casecompara con===, así que las ramas pueden ser tipos o patrones.when 1..10atrapa los números chicos antes de queIntegerlos vea.- Una rama con regexp coincide con las cadenas que empiezan con
rb. thenmantiene en una línea las ramas de una sola expresión.
Palabras clave y builtins usados aquí
IntegerStringcasedefelseendputsthenwhen
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 395
- Tokens
- 86
- Ritmo de tres estrellas
- 85 tpm
Al ritmo de tres estrellas de 85 tokens por minuto, este intento toma unos 61 segundos.
Paso 2 de 3 en Control de flujo; paso 8 de 29 en Fundamentos del lenguaje.