在lua中更改具有全局函数的局部变量
发布时间:2020-12-14 21:43:49 所属栏目:大数据 来源:网络整理
导读:我有两个脚本在运行,我无法将两个脚本合并为一个.必须有两个跑步. 脚本A几乎完全是本地的,但它确实调用了几次全局函数.这些是在脚本B中定义的.我想知道函数是否有可能以某种方式在脚本A中使用局部变量. 它是这样的: --Script Alocal lastUpdateID = 308loca
我有两个脚本在运行,我无法将两个脚本合并为一个.必须有两个跑步.
脚本A几乎完全是本地的,但它确实调用了几次全局函数.这些是在脚本B中定义的.我想知道函数是否有可能以某种方式在脚本A中使用局部变量. 它是这样的: --Script A local lastUpdateID = 308 local var1,var2=6,7 _G.writeDefinition(var1,var2) --Script B function _G.writeDefinition(var1,var2) -- Right here,is it possible that we can alter the -- variable lastUpdateID? < (This is my question) end 我试过调查getfenv和setfenv,但他们没有显示本地变量存在.这一点的全部意义在于,当脚本A调用writeDefinition时,lastUpdateID会增加1.但是,lastUpdateID必须保留为局部变量. 编辑:Ryan Stein的解决方案有效,但我后来在脚本中遇到了另一个问题. 现在它是这样的: local f_count=1 local function sell_lox() local sellID=5 _G.writeDefinition(sellID,sellID.." PX_lvs") end 它与原始问题类似.据我所知,我唯一可以得到的是调用writeDefinition时的SellID.有没有办法在调用writeDefinition时从此增加f_count? 解决方法
考虑到您的情况,这只能通过
debug 库实现.
function writeDefinition(var1,var2) local i,k,v = 0 repeat -- Iterate through the calling function's local variables. i = i + 1 k,v = debug.getlocal(2,i) until k == 'lastUpdateID' debug.setlocal(2,i,v + 1) -- Increment lastUpdateID. end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |