加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读