При переопределении операторов равенства в Lua (через метаметод «__eq
») есть ли способ по-прежнему проверять примитивное равенство (т.е. не вызывать переопределенное __eq
, а проверять, являются ли два табличных значения ссылочными одинаковыми?) Мне нужно сделать это из C API, но я не могу найти там подходящей функции.
Например:
lua_newtable(L);
lua_newtable(L);
assert(!some_comparison());
lua_pushvalue(L,-1);
assert(some_comparison());
Где some_comparison()
не вызывает метаметод __eq
.
(Обратите внимание, что lua_compare()
не удовлетворяет этому, в частности. Я хочу lua_rawcompare()
, если хотите - или, скорее, трюк или обходной путь, который даст мне эквивалент. Идея состоит в том, чтобы предотвратить бесконечную рекурсию в реализации __eq
...)