在lua中使用全局函数更改本地变量

我有两个脚本正在运行,我无法将这两个脚本合并为一个。必须有两个正在运行。

脚本A几乎完全在本地运行,但它确实偶尔会调用全局函数。 这些在脚本B中定义。我想知道是否可能在脚本A中使用本地变量来使用函数。

就像这样:

- 脚本A
local lastUpdateID = 308
local var1,var2=6,7
_G.writeDefinition(var1,var2)

- 脚本B
function _G.writeDefinition(var1,var2)
  - 刚才,我们能否更改
  - 变量lastUpdateID?  <(这是我的问题)
end

我尝试查看getfenvsetfenv,但它们没有显示本地变量的存在。整个目的是,当脚本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?

点赞
用户828255
用户828255

考虑到您的情况,只有通过debug库才能实现这一点。

function writeDefinition(var1, var2)
  local i, k, v = 0
  repeat -- 遍历调用函数的本地变量。
    i = i + 1
    k, v = debug.getlocal(2, i)
  until k == 'lastUpdateID'
  debug.setlocal(2, i, v + 1) -- 增加 lastUpdateID 的值。
end
2014-01-12 17:14:25