Trilhas
/
Elixir
Elixir
/
Programa
/
Casamento de padrões
Ca

Casamento de padrões em Elixir

73 exercícios

Sobre Casamento de padrões

Ao escrever funções em Elixir, podemos usar um estilo assertivo com pattern matching:

def read_file() do
  {:ok, contents} = File.read("hello.txt")
  contents
end
  • O pattern matching é feito explicitamente com o operador de correspondência, =/2.

    • As correspondências dão certo quando a forma dos dados no lado esquerdo do operador corresponde à do lado direito.

    • Quando a correspondência dá certo, as variáveis do lado esquerdo são vinculadas aos valores do lado direito.

    • Usar um underscore, _, permite ignorar os valores nessas posições.

      {:ok, number, _} = {:ok, 5, [4.5, 6.3]}
      number
      # => 5 is bound to this variable
      
    • O operador pin ^ pode ser usado para impedir que uma variável seja vinculada de novo e, em vez disso, fazer pattern matching com o valor que ela já tem.

      number = 10
      {:ok, ^number, _} = {:ok, 5, [4.5, 6.3]}
      # => ** (MatchError) no match of right hand side value: {:ok, 5, [4.5, 6.3]}
      
  • O pattern matching também pode acontecer na cabeça de uma cláusula de função, de modo que só os argumentos que correspondem ao padrão invocam a função.

  • Variáveis podem ser vinculadas no pattern matching 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 O link abre em uma nova janela ou aba

Aprenda Casamento de padrões

A prática está bloqueada

Desbloqueie mais 10 exercícios para praticar Casamento de padrões