Lua で ( " __eq
" メタメソッドを使用して) 等価演算子をオーバーライドする場合、プリミティブの等価性をチェックする方法はありますか (つまり、オーバーライドされた を呼び出さず__eq
に、2 つのテーブル値が参照的に同じかどうかをチェックしますか?)、これを行う必要があります。 C APIからですが、そこに適切な関数が見つかりません。
例えば:
lua_newtable(L);
lua_newtable(L);
assert(!some_comparison());
lua_pushvalue(L,-1);
assert(some_comparison());
Whereはメタメソッドsome_comparison()
を呼び出しません__eq
。
lua_compare()
(特に、これを満たさないことに注意してください。必要lua_rawcompare()
であれば、または同等のものを提供するトリックまたは回避策が必要です。アイデアは、__eq
実装での無限再帰を防ぐことです...)