我可以用一个整数以外的方式索引一个lua数组

dav*_*n11 1 lua

使用metatable(或字符串)作为数组的索引是否合法.下面的代码(没有做太多)似乎允许它.我在手册/互联网等搜索,但无法找到这是否是合法的语法,或它只是恰好工作.如果有人能证实这是合法的,我会很感激.

(顺便说一句,如果它是合法的,它使我能够使用metatables索引数组,这提供了相当多的功能.例如,一个多值键可以索引db表等等)

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])
Run Code Online (Sandbox Code Playgroud)

lhf*_*lhf 9

"类型表实现关联数组,即不仅可以用数字索引,而且可以用任何值(除了nil)索引的数组." http://www.lua.org/manual/5.1/manual.html#2.2

  • 谢谢,这是非常强大的,我越使用lua越多我觉得哇! (3认同)