typestar

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

  1. case compara con ===, así que las ramas pueden ser tipos o patrones.
  2. when 1..10 atrapa los números chicos antes de que Integer los vea.
  3. Una rama con regexp coincide con las cadenas que empiezan con rb.
  4. then mantiene en una línea las ramas de una sola expresión.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Control de flujo; paso 8 de 29 en Fundamentos del lenguaje.

← Anterior Siguiente →