Tabla de Objetos en Lua
Estoy intentando crear un objeto Lua como este:
Block = {x = 0, y = 0, color = “red”}
function Block:new (x, y, color)
block = {}
setmetatable(block, self)
self.__index = self
self.x = x
self.y = y
self.color = color
return block
end
Luego, colocando varias instancias de este objeto en una tabla en un archivo separado:
blocks = {}
table.insert(blocks, Block:new(0, 0, ‘red’))
table.insert(blocks, Block:new(2, 0, ‘blue’))
table.insert(blocks, Block:new(1, 1, ‘green’))
for i,v in ipairs(blocks) do
print(i,v.x, v.y, v.color)
end
Pero mi salida es:
1 1 1 verde
2 1 1 verde
3 1 1 verde
¿Cómo puedo hacer que estos objetos conserven su propia instancia en la tabla?
davy.ai
Puede utilizar la función
setmetatable
para establecer el__index
de la tabla al objetoBlock
. Esto asegurará que cada instancia del objetoBlock
se almacene en la tablablocks
.Por ejemplo:
Esto debería producir la salida: