typestar

case y guardas en Elixir

Una sola expresión case clasifica lecturas de sensor en tres resultados por forma y tamaño.

defmodule Gauge do
  # case tries each pattern in order; when bolts a guard onto a clause.
  def check(reading) do
    case reading do
      {:ok, temp} when temp >= 100 -> "boiling at #{temp} C"
      {:ok, temp} -> "steady at #{temp} C"
      {:error, why} -> "sensor down: #{why}"
    end
  end
end

IO.puts(Gauge.check({:ok, 104}))
IO.puts(Gauge.check({:ok, 21}))
IO.puts(Gauge.check({:error, "loose wire"}))

Cómo funciona

  1. case reading do prueba cada patrón en orden y devuelve la rama que encaja.
  2. {:ok, temp} when temp >= 100 coincide con la misma forma que la cláusula siguiente, pero solo pasada su guarda.
  3. {:error, why} atrapa la tupla de falla y reporta la razón.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
380
Tokens
105
Ritmo de tres estrellas
75 tpm

Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 84 segundos.

Escribe este fragmento

Paso 3 de 3 en Coincidencia de patrones; paso 6 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →