indexing - lua索引不返回多个值

标签 indexing lua

对象应包含每个索引的一对值。

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/

相关文章:

python - 无法删除索引列并重命名第二列

c++ - C++的多重关联问题

string - 如何在 Lua 中将一个字符串插入另一个字符串?

string - 如何在Lua中使用字符串访问表

sql-server - SQL索引问题: Why does SQL Server prefer this NONCLUSTERED index to a CLUSTERED one?

python - pandas:如何重新索引多索引级别?

indexing - Angularjs - 如何有条件地在 <tr> 中应用不同的类来重复指令

Lua 图像错误

http - 将 stdout 流式传输到网页

arrays - 将二进制文件读入数组