Menu
Coddy logo textTech

Tabelas com Funções

Parte da seção Object Oriented Programming do Journey de Lua da Coddy — lição 1 de 70.

Em Lua, as tabelas são incrivelmente versáteis. Além de armazenar dados, elas também podem conter funções. Isso permite que você agrupe operações relacionadas, mantendo seu código organizado e fácil de gerenciar.

Para colocar uma função dentro de uma tabela, você simplesmente a atribui a uma chave como qualquer outro valor:

local myTable = {
    greet = function(name)
        return "Hello, " .. name
    end
}

print(myTable.greet("Alice"))  -- Saída: Hello, Alice

Você também pode definir a função separadamente e depois adicioná-la à tabela:

local myTable = {}

myTable.greet = function(name)
    return "Hello, " .. name
end

Ou use esta sintaxe abreviada mais limpa:

local myTable = {}

function myTable.greet(name)
    return "Hello, " .. name
end

Todas as três abordagens produzem o mesmo resultado. Você chama a função usando a notação de ponto: myTable.greet("Alice"). Este padrão de agrupar funções com dados é a base da programação orientada a objetos em Lua.

challenge icon

Desafio

Fácil

Crie uma tabela chamada calculator que contenha quatro funções aritméticas:

  • add(a, b) - retorna a soma de a e b
  • subtract(a, b) - retorna a menos b
  • multiply(a, b) - retorna o produto de a e b
  • divide(a, b) - retorna a dividido por b

Você receberá três entradas:

  1. Um nome de operação (um de: add, subtract, multiply, divide)
  2. Primeiro número
  3. Segundo número

Chame a função apropriada da sua tabela calculator com base no nome da operação e imprima o resultado.

Folha de consulta

Em Lua, as tabelas podem armazenar funções junto com dados. Para adicionar uma função a uma tabela, atribua-a a uma chave:

local myTable = {
    greet = function(name)
        return "Hello, " .. name
    end
}

print(myTable.greet("Alice"))  -- Saída: Hello, Alice

Você também pode definir funções separadamente e adicioná-las à tabela:

local myTable = {}

myTable.greet = function(name)
    return "Hello, " .. name
end

Ou use a sintaxe abreviada:

local myTable = {}

function myTable.greet(name)
    return "Hello, " .. name
end

Chame funções de tabela usando a notação de ponto: myTable.greet("Alice")

Experimente você mesmo

-- Ler as entradas
local operation = io.read()
local num1 = tonumber(io.read())
local num2 = tonumber(io.read())

-- TODO: Criar uma tabela calculator com quatro funções:
-- add(a, b), subtract(a, b), multiply(a, b), divide(a, b)


-- TODO: Chamar a função apropriada da tabela calculator usando o nome da operação
-- e imprimir o resultado
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 Object Oriented Programming