Итак, я знаю, что lua будет искать метатаблицу таблицы, если она не содержит переменной, на которую я ссылаюсь, но кажется неправильным, что когда я пытаюсь установить переменную, которая еще не существует в таблице, вместо этого она устанавливает ее в метатаблицу. .
Вот пример того, что я имею в виду
a = {__index = {tbl1 = {var = 1}, tbl2 = {var = 2}}}
b = setmetatable({}, a)
print(b.tbl1.var, a.__index.tbl1.var)
b.tbl1.var = 2
print(b.tbl1.var, a.__index.tbl1.var)
В этом коде он заменит переменную метатаблиц вместо того, чтобы устанавливать ее в таблице, на которую я ссылаюсь.
Однако этого не происходит с этим кодом
a = {__index = {4, 5, 6}}
b = setmetatable({}, a)
print(b[1], a.__index[1])
b[1] = 2
print(b[1], a.__index[1])
Требуется ли дополнительная работа при использовании метатаблиц и вложенных таблиц? Или есть способ обойти это?