Menu
Coddy logo textTech

Tablas con funciones

Parte de la sección Object Oriented Programming del Journey de Lua de Coddy — lección 1 de 70.

En Lua, las tablas son increíblemente versátiles. Más allá de almacenar datos, también pueden contener funciones. Esto te permite agrupar operaciones relacionadas, manteniendo tu código organizado y fácil de gestionar.

Para colocar una función dentro de una tabla, simplemente la asignas a una clave como cualquier otro valor:

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

print(myTable.greet("Alice"))  -- Salida: Hello, Alice

También puedes definir la función por separado y luego añadirla a la tabla:

local myTable = {}

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

O usa esta sintaxis abreviada más limpia:

local myTable = {}

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

Los tres enfoques producen el mismo resultado. Llamas a la función usando la notación de puntos: myTable.greet("Alice"). Este patrón de agrupar funciones con datos es la base de la programación orientada a objetos en Lua.

challenge icon

Desafío

Fácil

Crea una tabla llamada calculator que contenga cuatro funciones aritméticas:

  • add(a, b) - devuelve la suma de a y b
  • subtract(a, b) - devuelve a menos b
  • multiply(a, b) - devuelve el producto de a y b
  • divide(a, b) - devuelve a dividido por b

Recibirás tres entradas:

  1. Un nombre de operación (uno de: add, subtract, multiply, divide)
  2. Primer número
  3. Segundo número

Llama a la función apropiada de tu tabla calculator basándote en el nombre de la operación e imprime el resultado.

Hoja de referencia

En Lua, las tablas pueden almacenar funciones junto con datos. Para agregar una función a una tabla, asígnela a una clave:

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

print(myTable.greet("Alice"))  -- Salida: Hello, Alice

También puede definir funciones por separado y agregarlas a la tabla:

local myTable = {}

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

O use la sintaxis abreviada:

local myTable = {}

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

Llame a las funciones de la tabla usando la notación de puntos: myTable.greet("Alice")

Pruébalo tú mismo

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

-- TODO: Crear una tabla calculator con cuatro funciones:
-- add(a, b), subtract(a, b), multiply(a, b), divide(a, b)


-- TODO: Llamar a la función apropiada de la tabla calculator usando el nombre de la operación
-- e imprimir el resultado
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Object Oriented Programming