Trilhas
/
Elixir
Elixir
/
Programa
/
Funções com múltiplas cláusulas
Fu

Funções com múltiplas cláusulas em Elixir

72 exercícios

Sobre Funções com múltiplas cláusulas

No Elixir, uma única função pode ter múltiplas cláusulas. Isso é possível fazendo pattern matching dos argumentos da função e usando guardas.

# pattern matching the argument
def number(7) do
  "Awesome, that's my favorite"
end

# using a guard
def number(n) when is_integer(n) do
  "That's not my favorite"
end

def number(_n) do
  "That's not even a number!"
end
  • Use múltiplas cláusulas de função para extrair a lógica de controle das funções.
  • As cláusulas são testadas em ordem, de cima para baixo no arquivo-fonte, até que uma delas funcione.
  • Se nenhuma funcionar, a VM do BEAM lança um FunctionClauseError.
  • Se uma variável de argumento não for usada nem no corpo da função nem em uma guarda, ela deve ser prefixada com um _; caso contrário, o compilador emite um aviso.
  • Funções anônimas também podem ter múltiplas cláusulas.
    fn
      13 -> "Awesome, that's my favorite"
      _ -> "That's not my favorite"
    end
    

Observe que funções com múltiplas cláusulas não devem ser confundidas com a sobrecarga de funções que você talvez conheça de outras linguagens de programação. No Elixir, as funções são identificadas apenas pelo nome e pela aridade, e não pelos tipos dos argumentos (já que não há tipagem estática). A função number/1 do exemplo é considerada uma única função, independentemente de quantas cláusulas ela tenha.

Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Funções com múltiplas cláusulas

A prática está bloqueada

Desbloqueie mais 10 exercícios para praticar Funções com múltiplas cláusulas