使用metatable(或字符串)作为数组的索引是否合法。下面的代码(没有做太多)似乎允许它。我在手册/互联网等搜索,但无法找到这是否是合法的语法,或它只是恰好工作。如果有人能证实这是合法的,我会很感激。
(顺便说一句,如果它是合法的,它使我能够使用元表来索引数组,这会给出相当大的权力。例如,一个多值键可以索引数据库表等等)
x = { val = 3 } -- our object
mt = {
__index = function (table, key)
print(key)
return table.val
end,
__newindex = function (t,k,v)
print(k)
t.val = v
end
}
setmetatable(x, mt)
print(x[1])
print({1,2})
x["hello"] = 4
print(x[1])
答案 0 :(得分:9)
“类型表实现了关联 数组,即可以的数组 索引不仅包含数字,还包括 任何价值(除了零)。“ http://www.lua.org/manual/5.1/manual.html#2.2