我有一个使用Lua C API的C++应用程序。 我通过Lua API声明了一个全局表:
lua_newtable(L);
lua_pushstring(L, "someLuaFunc");
lua_pushcfunction(L, &someCFunc);
lua_settable(L, -3);
lua_setglobal(L, "table1");
现在我可以使用 '.' 或 ':' 调用一些Lua函数。
table1.someLuaFunc()
table1:someLuaFunc()
两种情况都将运行someCFunc。
问题是:在someCFunc内部,有没有办法确定它是如何被调用的(通过“:”还是“.”)?
在我的情况下,检查参数计数和类型不是一种选择。