【发布时间】:2021-11-18 09:17:35
【问题描述】:
我正在尝试创建这样的 Lua 对象
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
然后将这个对象的几个实例放到一个单独文件的表中
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
但我的输出是
1 1 1 green
2 1 1 green
3 1 1 green
如何让这些对象在表中保留它们自己的实例?
【问题讨论】:
-
在
Block:new函数体内self是一个类,block是一个实例。所以,用block.x = x替换self.x = x