对象应包含每个索引的一对值。
object = {}
function object:new()
self.elements = {}
setmetatable(self, self)
return self
end
function object:append(first, second)
self.elements[#self.elements + 1] = {first, second}
end
function object:__index(k)
return unpack(self.elements[k])
end
当我尝试按索引访问值时,我仅获得该对的第一个值。
o:append(1,2)
o:append(3,4)
> return o[1]
1
直接 __index 方法涉及产生预期结果。
> return o:__index(1)
1 2
原因是什么?
最佳答案
可能没有什么原因,但要保持表索引的语义而不需要元表。
该行为记录在 Reference Manual 中。当 __index
是函数时,解释索引元方法语义的代码将返回的值调整为 1。
关于indexing - lua索引不返回多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27124674/