📘
Aprenda Elixir utilizando testes
  • Introdução
  • Sobre o autor
  • O valor desse livro
  • Primeiros passos em Elixir
    • Linguagem
    • Instalação
    • Ferramenta Mix
    • Meu "Hello, world"
    • IEx
  • Básico
    • Módulos
    • Funções
      • Funções nomeadas
      • Funções anônimas
      • Funções nomeadas convertidas para anônima
    • Tipos
      • String
      • Integer
      • Float
      • Atoms
    • Pattern Matching
    • Coleções
      • Tuplas
      • Mapas
      • Estruturas
      • Listas
    • Estruturas de repetição
      • Recursão
    • Controle de fluxo
      • Pipes
      • With
      • Condicionais
        • if
        • cond
        • case
      • Guards
    • Manipulação de dados
      • Enum
      • Stream
    • Compreensão (for)
  • Conceitos
    • Imutabilidade
    • Aridade
    • Convenções
    • Enumeráveis
Powered by GitBook
On this page

Was this helpful?

  1. Básico
  2. Funções

Funções nomeadas convertidas para anônima

PreviousFunções anônimasNextTipos

Last updated 2 years ago

Was this helpful?

Em alguns casos queremos utilizar uma função nomeada como parâmetro para alguma outra função. Por natureza não podemos fazer isso com funções nomeadas, somente com funções anônimas como foi exemplificado no capítulo de .

Mas quando precisamos fazer isso, o elixir nos deixa transformar uma função nomeada em função anônima. Para isso, podemos utilizar o operador de captura (&)

Sua estrutura começa com o operador de captura, seguido da chamada da função + a aridade da função.

&String.reverse/1

Com isso ela se torna uma função anônima, nos possibilitando coloca-la em uma variável ou passar por parâmetro.

Um exemplo de como podemos fazer isso

# usando função anônima
Enum.map([1,2,3], fn x -> x * 2 end)
# [2, 4, 6]

# usando função nomeada
defmodule MyModule do
  def math(x), do: x * 2 
end

Enum.map([1,2,3], &MyModule.math/1)
# [2, 4, 6]

funções anônimas