Percursos
/
Elixir
Elixir
/
Programa
/
Correspondência de padrões
Co

Correspondência de padrões em Elixir

73 exercícios

Sobre Correspondência de padrões

Ao escrever funções em Elixir, podemos recorrer a um estilo assertivo com correspondência de padrões:

def read_file() do
  {:ok, contents} = File.read("hello.txt")
  contents
end
  • A correspondência de padrões é feita explicitamente com o operador de correspondência, =/2.

    • As correspondências são bem-sucedidas quando a forma dos dados do lado esquerdo do operador corresponde ao lado direito.

    • Quando as correspondências são bem-sucedidas, as variáveis do lado esquerdo ficam associadas aos valores do lado direito.

    • Usar um underscore, _, permite ignorar os valores nesses lugares.

      {:ok, number, _} = {:ok, 5, [4.5, 6.3]}
      number
      # => 5 is bound to this variable
      
    • O operador de fixação ^ pode ser usado para impedir que uma variável seja reassociada e, em vez disso, fazer correspondência de padrões com o seu valor existente.

      number = 10
      {:ok, ^number, _} = {:ok, 5, [4.5, 6.3]}
      # => ** (MatchError) no match of right hand side value: {:ok, 5, [4.5, 6.3]}
      
  • As correspondências de padrões também podem ocorrer na cabeça de uma cláusula de função, para que apenas os argumentos que correspondam ao padrão invoquem a função.

  • As variáveis podem ser associadas numa correspondência de padrões de uma cláusula de função.

    defmodule Example do
      def named_function(:a = atom_variable) do
        {atom_variable, 1}
      end
    end
    
    Example.named_function(:a)
    # => {:a, 1}
    # The first function clause matches, so it is invoked
    
    Example.named_function(:b)
    # => ** (FunctionClauseError) no function clause matching in Example.named_function/1
    
Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Correspondência de padrões

A prática está bloqueada

Desbloqueia mais 10 exercícios para praticares Correspondência de padrões