Я пытаюсь написать метатаблицу, чтобы все индексы в таблице были сдвинуты на одну позицию вверх (т. Е. t[i]
должен вернуть t[i+1]
).Мне нужно сделать это, потому что таблица определяется с использованием индекса 1 в качестве первого элемента, но я должен взаимодействовать с программой, которая использует индекс 0 в качестве первого элемента.Читая Программирование на Lua, я думаю, что могу достичь желаемого с помощью таблицы прокси, но, похоже, не могу заставить ее работать.Пока у меня есть это:
t = {"foo", "bar"}
local _t = t
t = {}
local mt = {
__index = function(t, i)
return _t[i+1]
end
}
setmetatable(t, mt)
Однако, это не создает ожидаемый результат.Фактически, он вообще не возвращает никаких значений (каждый поиск nil
).Есть ли лучший способ сделать это, или я просто что-то упустил?