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

时间:2019-05-21 04:12:15

标签: c++ lua

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

例如,of.getHours()应该可以被ofGetHours()调用。

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

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

此方法可以正常工作,但我想使用Lua C API来执行此操作,以提高性能并提高代码的可读性。

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

1 个答案:

答案 0 :(得分:2)

提供的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);