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