У меня есть пустая таблица, чьи метаметоды __newindex и __index реализованы на стороне C.Таблица будет использоваться в качестве массива (t [1] = 3, print (t [2]) ...), причем C перехватывает все обращения.
Теперь я хочу использовать luaL_ref, чтобы добавить ссылку на другой объект в эту таблицу, чтобы предотвратить выбрасывание второго из-за gc.Но я думаю, что возвращаемая ссылка может скрывать «виртуальные» индексы, которые я собираюсь использовать с этой таблицей:
Например, я ожидаю, что t [1] = 3 вызовет __newindex, но если lauL_refвернул 1, тогда моя таблица действительно имела бы элемент в '1', тогда __newindex больше не вызывался бы.
Я знаю, что luaL_ref гарантированно вернет ключ, еще не использованный в таблице, но так как таблица пуста (так что мои метаметоды всегда вызываются), я думаю, что на самом деле она может возвращать низкие значения, которые яЯ могу использовать.
Есть ли недостатки в этом рассуждении?Если нет, как я могу обойти это?