Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Declarar uma função anônima
  2. Função anônima com parâmetro
  3. Retornar valor
  4. Retornar função anônima
  5. Definir parâmetro com valor padrão
  6. Checar o tipo de um parâmetro
  7. Retornar um ou mais valores
  8. Declarar parâmetros variáveis

A linguagem Lua possui o recurso de funções anônimas. Esse tipo de função possui as mesmas características das Funções vistas anteriormente, com exceção de que não possuem nome. São declaradas, atribuídas à variáveis e invocadas a partir do nome das variáveis as quais foram atribuídas.

Sintaxe
nome_variavel = function()
    --corpo da função
end
Exemplo 1
local variavel = function(param1)
  print(param1)
end

variavel("teste")
Saída
teste

Agora que já sabemos criar funções anônimas na linguagem Lua, podemos criar funções anônimas com parâmetros:

Sintaxe
nome_variavel = function(param1, ... ,paramN)
    --corpo da função
end
Exemplo 2
--função anônima
local variavel = function(param1,param2)
  print(param1)
end

variavel(1, "string")
Saída
1     string

O retorno de valor em função anônima é feito da mesma forma que funções comuns, utilizando comando return.

Sintaxe
variavel = function(<parametros>)
  --corpo função
  return valor_retorno
end
Exemplo 3
local variavel = function(param1)
  return param1*2
end

local retorno = variavel(2)

print(retorno)
Saída
4

O retorno de múltiplos valores em funções anônimas também é feito da mesma forma que em funções:

Exemplo 5
local variavel = function(param1)
  --corpo função
  return param1*2,param1*3,param1*4
end

local ret1,ret2,ret3 = variavel(2) --chamada

print(ret1,ret2,ret3)
Saída
4	6	8

Lua permite que uma função anônima possa ser retornada por uma função. Para isso, basta atribuir uma função anônima à uma variável para ser retornada:

Exemplo 3
function funcao()
  funcao_ret = function(valor)
    print(valor)
  end
  --omitido
  return funcao_ret --função anônima retornada
end

local ret_func = funcao()

ret_func("string");
ret_func(999);
Saída
string
999
  1. 15/09/2025 - revisão 4 - Ajustes: pontuais, sintaxes e objetivos
  2. 12/06/2025 - revisão 3 - Adição 'Retornando função anônima.'
  3. 12/09/2024 - revisão 2 - Pequenos ajustes gramaticais
  4. 03/10/2023 - revisão 1 - Correção em referências e erros gramaticais
  5. 26/05/2023 - versão inicial