Menu
Coddy logo textTech

Funções Anônimas

Parte da seção Logic & Flow do Journey de Lua da Coddy — lição 13 de 54.

Agora que você entende que funções podem ser armazenadas em variáveis e passadas adiante, existe uma maneira ainda mais concisa de escrevê-las. Em vez de sempre dar um nome a uma função, você pode criá-la diretamente onde precisar — elas são chamadas de funções anônimas.

Uma função anônima é simplesmente uma função sem um nome. Você a define usando a palavra-chave function seguida imediatamente por seus parâmetros e corpo:

function(a, b)
    return a + b
end

Isso cria um valor de função que pode ser usado imediatamente. Funções anônimas são particularmente úteis ao passar funções como argumentos para outras funções. Lembra-se do exemplo de ordenação personalizada de antes? Veja como fica com uma função anônima:

local players = {
    {name = "Alice", score = 150},
    {name = "Bob", score = 200},
    {name = "Charlie", score = 175}
}

table.sort(players, function(a, b)
    return a.score > b.score
end)

Em vez de definir uma função nomeada separada para a comparação, a função é criada diretamente como o segundo argumento para table.sort(). Isso torna o código mais compacto e mantém a lógica de ordenação exatamente onde ela é usada.

challenge icon

Desafio

Fácil

Escreva uma função filterByThreshold que receba numbers e threshold e retorne uma nova tabela contendo apenas números maiores que o limite (threshold).

Use table.insert() com uma abordagem de função anônima para filtrar os números. Crie a lógica de filtragem inline sem definir uma função nomeada separada.

Lógica:

  • Crie uma tabela de resultado vazia
  • Itere através da tabela de números
  • Para cada número, use uma função anônima para verificar se ele excede o limite
  • Se a verificação retornar verdadeiro, adicione o número à tabela de resultado
  • Retorne a tabela de resultado filtrada

Parâmetros:

  • numbers (table): Uma tabela estilo lista contendo valores numéricos
  • threshold (number): O valor mínimo (exclusivo) para filtragem

Retorna: Uma tabela contendo apenas números maiores que o limite (table)

Folha de consulta

Uma função anônima é uma função sem nome, definida usando a palavra-chave function seguida por parâmetros e corpo:

function(a, b)
    return a + b
end

Funções anônimas são úteis ao passar funções como argumentos, mantendo a lógica inline onde ela é usada:

local players = {
    {name = "Alice", score = 150},
    {name = "Bob", score = 200},
    {name = "Charlie", score = 175}
}

table.sort(players, function(a, b)
    return a.score > b.score
end)

Isso cria a função de comparação diretamente como um argumento para table.sort(), tornando o código mais compacto.

Experimente você mesmo

function filterByThreshold(numbers, threshold)
    -- Escreva o código aqui
end
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Logic & Flow