Справочное руководство по языку Lua 5.1 :: 2.10.2 - Значения и типы



2.10.2 – Таблицы «слабых» ссылок

Таблицы этого типа используются для хранения «слабых» ссылок (weakreferences). Сборщик мусора игнорирует «слабые» ссылки. Другими словами, если единственной ссылкой на объект является «слабая» ссылка, то сборщик мусора сохраняет этот объект в такой таблице.

Таблица «слабых» ссылок может содержать «слабые» ключи, «слабые» значения, а также и то, и другое. Таблица со «слабыми» ключами позволяет хранить эти ключи, но не допускает хранение их значений. Таблица со «слабыми» ключами и «слабыми» значениями соответственно позволяет хранить и ключи, и значения. Таким образом, если ключ или значение сохранены, то соответствующая пара удаляется из таблицы. «Слабость» в таблице контролируется полем __mode ее метатаблицы. Если поле __mode это строка, содержащая символ  k', то ключи в таблице «слабые». Если __mode содержит 'v', то в таблице хранятся «слабые» значения.

После использования таблицы как метатаблицы вы не можете изменить поле __mode. Таким образом, «слабое» поведение таблицы, за которое отвечает метатаблица, переопределить нельзя.