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 como parâmetro/argumento
  3. Retornar valores de funções anônimas
  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(param1,param2,paramN)
    --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 e passá-las como argumento para outras funções.

Sintaxe
function nome_funcao(param_funcao_anonima,param1,param2,paramN)
  param_funcao_anonima(param1,param2,paramN)
end
Exemplo 2
--função que receberá a função anônima como parâmetro
function funcao(param1,param2)
  param1(param2)
end

--função anônima
local variavel = function(param1)
  print(param1)
end

--passando função anônima como parâmetro
funcao(variavel,"um string qualquer")
Saída
um string qualquer

O retorno de valores de funções anônimas é feito da mesma forma que funções comuns, utilizando comando return.

Sintaxe
variavel = function(param1,param2,paramN)
  --corpo função
  return valor
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 que será retornada:

Exemplo 3
function funcao()
  funcao_ret = function(valor)
    print(valor)
  end
  --omitido
  return funcao_ret
end

local ret_func = funcao()

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