从C'全球'

时间:2015-09-15 10:24:57

标签: c lua lua-table

如果从C中重新设置此全局字段,是否可以更改整个.lua文件中全局字段的值?

这可能是lua文件:

GlobalVar   = 123      

Table1 = {ID = 1,   Val = GlobalVar}      -- Val = 123

现在如果我通过Lua的C-API打电话......

luaL_loadfile(lua, "lua-file" ...

lua_pushstring(lua, "321");
lua_setglobal(lua, "GlobalVar");

这只会将“GlobalVar”从“Table1”更改为 321 ,而不是“Val”。

第一次加载.lua文件时,似乎将GlobalVar的初始复制到Table1。

有没有办法更新整个lua文件?

1 个答案:

答案 0 :(得分:1)

正如@Youka在评论中描述的那样,您无法执行此操作,因为在初始化Table1时会复制该值。如果你正在做的是设置全局变量,然后运行lua代码一次,你可以有条件地初始化Lua文件中的全局变量:

if GlobalVar == nil then GlobalVar = 123 end

Table1 = {ID = 1,   Val = GlobalVar}      -- Val = 123

这使您有机会使用lua_setglobal从C建立全局优先,或接受默认值。