如果从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”更改为321 ,而不会将“ Table1”的“ Val”更改为。
似乎首次加载.lua文件时,GlobalVar的初始值已复制到Table1。
有没有办法更新整个lua文件?
正如@Youka在评论中所描述的那样,您无法执行此操作,因为该值是在初始化时复制的Table1
。如果您正在设置全局变量,然后运行lua代码一次,则可以在Lua文件中有条件地初始化全局变量:
if GlobalVar == nil then GlobalVar = 123 end
Table1 = {ID = 1, Val = GlobalVar} -- Val = 123
这使您有机会使用来从C建立全局优先级lua_setglobal
,或者接受默认值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句