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