gpt4 book ai didi

从 C 'globally' 更改 Lua 中的全局变量

转载 作者:行者123 更新时间:2023-12-02 03:22:13 24 4
gpt4 key购买 nike

如果从 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

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

关于从 C 'globally' 更改 Lua 中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32583656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com