Menu
Coddy logo textTech

Funções como Valores de Primeira Classe

Parte da seção Lógica e Fluxo do Journey de Lua da Coddy. Lição 12 de 54.

Em Lua, as funções são mais do que apenas blocos de código que realizam tarefas. Elas são valores que podem ser tratados como qualquer outro tipo de dado. Isso significa que você pode trabalhar com funções da mesma forma que trabalha com números, strings ou tabelas.

Você pode armazenar uma função em uma variável:

local greet = function()
    print("Hello!")
end

greet()  -- Saída: Hello!

Aqui, a função é atribuída à variável greet, e você pode chamá-la como qualquer função comum. Isso abre possibilidades poderosas para a forma como você estrutura seu código.

Funções também podem ser passadas como argumentos para outras funções. Isso é particularmente útil quando você quer que uma função use o comportamento definido em outra:

function executeAction(action)
    action()
end

local sayHello = function()
    print("Hello from a function!")
end

executeAction(sayHello)  -- Saída: Hello from a function!

Neste exemplo, executeAction recebe uma função como parâmetro e a chama. A função sayHello é passada da mesma forma que você passaria um número ou uma string.

As funções podem até mesmo retornar outras funções. Isso permite criar funções dinamicamente com base em determinadas condições ou parâmetros:

function createMultiplier(factor)
    return function(number)
        return number * factor
    end
end

local double = createMultiplier(2)
print(double(5))  -- Saída: 10
challenge icon

Desafio

Fácil

Escreva uma função applyOperation que receba a, b e operation e retorne o resultado da aplicação da função de operação aos dois números.

O parâmetro operation é uma tabela que contém uma função que será chamada com a e b como argumentos.

Lógica:

  • Extraia a função da tabela operation usando a chave "func"
  • Chame essa função com a e b como argumentos
  • Retorne o resultado

Parâmetros:

  • a (number): Primeiro número
  • b (number): Segundo número
  • operation (table): Uma tabela contendo uma função armazenada na chave "func"

Retorno: O resultado da chamada da função de operação com a e b (number)

Experimente você mesmo

function applyOperation(a, b, operation)
    -- 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