Menu
Coddy logo textTech

Funções Anônimas

Parte da seção Lógica e Fluxo 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, há 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 dela. Essas são chamadas de funções anônimas.

Uma função anônima é simplesmente uma função sem 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 ele 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 de table.sort(). Isso torna o código mais compacto e mantém a lógica de ordenação exatamente onde é 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.

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

Lógica:

  • Crie uma tabela de resultados vazia
  • Percorra a 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 true, adicione o número à tabela de resultados
  • Retorne a tabela de resultados filtrada

Parâmetros:

  • numbers (tabela): Uma tabela no estilo lista contendo valores numéricos
  • threshold (número): O valor mínimo (exclusivo) para a filtragem

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

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 Lógica e Fluxo

Pratique por conta própria: Compilador de Lua online