Gu

Guards em Elixir

53 exercícios

Sobre Guards

Guards são usados como complemento ao pattern matching. Permitem verificações mais complexas. Podem ser usados em algumas situações, mas não todas em que o pattern matching pode ser usado, por exemplo em cláusulas de função ou cláusulas de case.

def empty?(list) when is_list(list) and length(list) == 0 do
  true
end
  • Os guards começam com a palavra-chave when, seguida de uma expressão booleana.

  • As expressões de guard são funções especiais que:

    • Devem ser puras e não alterar nenhum estado global.
    • Devem retornar valores estritamente true ou false.
  • Uma lista dos guards mais comuns está na documentação do Elixir. Ela inclui:

  • Você pode definir seus próprios guards com defguard.

    • De acordo com a convenção de nomenclatura do Elixir, os nomes de guards devem começar com 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
      
Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Guards

A prática está bloqueada

Desbloqueie mais 6 exercícios para praticar Guards