Вот я о чем:
local knowns = {"A","B","C"}
local indexer = {
__index = function(self, key)
return "unknown"
end
}
setmetatable(knowns, indexer)
for i=1,5 do
print(knowns[i])
end
результат:
A
B
C
unknown
unknown
т..е. __index стреляет только для тех элементов, которые отсутствуют в таблице knowns.