Pilas

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Una pila es una estructura de datos lineal con una colección de elementos que sigue el principio de Último en Entrar, Primero en Salir (LIFO). La parte superior de la pila es el elemento que se agregó más recientemente, y la parte inferior de la pila es el elemento que se agregó hace menos tiempo.

Puedes pensar en la estructura de datos de pila como una pila de platos de cena: comienzas con uno y luego pones otro encima. Cuando quitas platos de la pila, el primero que quitas de la pila es el último que pusiste en la parte superior.

Las pilas tienen dos operaciones principales: push para agregar un elemento a la parte superior de la pila y pop para eliminar el elemento de la parte superior de la pila. Una pila puede tener un tamaño fijo o ser redimensionada dinámicamente. Las pilas son útiles para usos de diseño, como algoritmos de retroceso.

Implementar pilas

Aunque Luau no tiene pilas como una estructura de datos incorporada, puedes usar tablas para implementar pilas. El siguiente ejemplo de código muestra cómo crear una pila, hacer push de un objeto a la pila y hacer pop de un objeto de la pila. Para usar esta implementación en tu juego, debes guardarla como un ModuleScript y almacenarla en ReplicatedStorage, para que tu pila sea accesible tanto para el cliente como para el servidor.


local Stack = {}
Stack.__index = Stack
function Stack.new()
local self = setmetatable({}, Stack)
self._stack = {}
return self
end
-- Verifica si la pila está vacía
function Stack:isEmpty()
return #self._stack == 0
end
-- Coloca un nuevo valor en la pila
function Stack:push(value)
table.insert(self._stack, value)
end
-- Toma un valor de la pila
function Stack:pop()
if self:isEmpty() then
return nil
end
return table.remove(self._stack, #self._stack)
end
return Stack

El siguiente ejemplo de código es un ejemplo de uso como un Script bajo Workspace. Puedes modificar el código, tipo y ubicación de almacenamiento para ajustarlo a tu propio uso, siempre que tengas el código de implementación anterior correctamente almacenado.

Ejemplo de Uso de Pila

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Stack = require(ReplicatedStorage:WaitForChild("Stack"))
local s = Stack.new()
-- Cambiar la pila Pila resultante Salida
s:push(1) -- {1}
s:push(5) -- {1, 5}
s:push(10) -- {1, 5, 10}
print(s:pop()) -- {1, 5} 10
print(s:pop()) -- {1} 5
s:push(20) -- {1, 20}
print(s:pop()) -- {1} 20
print(s:pop()) -- {} 1

Si ejecutas el ejemplo de código anterior sin cambiar nada, la salida esperada es:

Salida del Ejemplo

10
5
20
1
©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.