如何在 Lua C API 中分配全局 Lua 函数变量?

我正在尝试重命名 Lua 中的一些函数,以便我可以更轻松地调用它们。

例如,of.getHours() 函数应该能够被 ofGetHours() 调用。

因此,在初始化 Lua 状态后,我加载了一个 Lua 字符串,该字符串分配了这些全局函数变量如下所示:

luaL_dostring(L, "ofGetHours = of.getHours ofGetMinutes = of.getMinutes");

这种方法很好用,但我希望使用 Lua C API 来增加性能并使代码更具可读性。

我认为我需要使用 lua_setglobal(),但我不知道如何正确地使用它。任何帮助都将不胜感激。

点赞
用户5675002
用户5675002

假设 os 值是一个全局表,你的代码可能如下所示:

lua_getglobal(L, "of");
lua_getfield(L, -1, "getMinutes");
lua_setglobal(L, "ofGetMinutes");
lua_getfield(L, -1, "getHours");
lua_setglobal(L, "ofGetHours");
lua_pop(L, 1);
2019-05-21 07:08:01