Las guardas se usan como complemento de la coincidencia de patrones. Permiten hacer comprobaciones más complejas. Se pueden usar en algunas situaciones, pero no en todas en las que se puede usar la coincidencia de patrones, por ejemplo en cláusulas de función o en cláusulas de case.
def empty?(list) when is_list(list) and length(list) == 0 do
true
end
Las guardas comienzan con la palabra clave when, seguida de una expresión booleana.
Las expresiones de las guardas son funciones especiales que:
true o false estrictos.En la documentación de Elixir hay una lista de las guardas más comunes. Entre ellas están:
Puedes definir tu propia guarda con defguard.
Según la convención de nombres de Elixir, los nombres de las guardas deben empezar con is_.
defmodule HTTP do
defguard is_success(code) when code >= 200 and code < 300
def handle_response(code) when is_success(code) do
:ok
end
end