Мне нужны объекты пользовательских данных для поддержки обоих методов и оператора индекса (с целочисленными индексами). Есть ли способ добиться этого в общей метатаблице без моделирования методов с помощью функции?
Я попытался объединить метатаблицы в цепочку, установив metatable(object).__index
для таблицы с фактическими методами и metatable(metatable(object).__index).__index
для функции, реализующей оператор индекса. Однако эта функция вызывается с первой __index
таблицей в качестве аргумента вместо исходного объекта. Это похоже на упущение в дизайне, поскольку гораздо больше смысла передавать исходный объект, когда __index
метаметод является функцией. В любом случае, есть ли способ добиться того, чего я хочу, без явной проверки имен методов в функции __index
?