【发布时间】:2015-12-11 13:37:33
【问题描述】:
如果从 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 的 initial 值似乎复制到 Table1。
有没有办法更新整个 lua 文件?
【问题讨论】:
-
正如您已经注意到的那样,
GlobalVar被复制,因为它是一个数字值(值复制,而不是引用复制)。要更新您的表格条目,您必须手动完成或将您的值存储在用作指针的表格中。