Допустимо ли использование метатаблицы (или строки) в качестве индекса для массива. Часть кода ниже (которая ничего не делает), кажется, позволяет это. Я искал в руководстве / интернете и т. Д., Но не могу найти, является ли это допустимым синтаксисом, или он просто работает. Если бы кто-то мог подтвердить, что это законно, я был бы признателен.
(кстати, если это законно, это дает мне возможность индексировать массивы с помощью метатаблиц, что дает немало возможностей. Например, многозначный ключ, доступный для индексации таблицы БД и т. Д.)
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])