Можно ли проверить, когда таблица проиндексирована, даже если ключ существует?
Я изучил метаметод __index, но он запускается только тогда, когда таблица индексируется со значением nil,
__index
nil
Нет;Как упомянул @Egor, «Единственный способ перехватить все обращения к таблице - это оставить ее пустой.» Решение состоит в том, чтобы не предоставлять доступ к таблице, в которой хранятся значения.
Это хорошо работает с фабричным методом (track, там же) для создания мета-методы таблицы, прокси-таблицы и прокси-таблицы.
track
Вы также можете сложить его в «новый» метод в любой из различных систем классов / прототипов, которые люди разработали в Lua.