如果从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文件?
答案 0 :(得分:1)
正如@Youka在评论中描述的那样,您无法执行此操作,因为在初始化Table1
时会复制该值。如果你正在做的是设置全局变量,然后运行lua代码一次,你可以有条件地初始化Lua文件中的全局变量:
if GlobalVar == nil then GlobalVar = 123 end
Table1 = {ID = 1, Val = GlobalVar} -- Val = 123
这使您有机会使用lua_setglobal
从C建立全局优先,或接受默认值。