function - 在lua中使用全局函数更改局部变量

标签 function variables lua global local

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

脚本 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

我尝试查看 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 ?

最佳答案

考虑到您的情况,这只能通过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

关于function - 在lua中使用全局函数更改局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21077276/

相关文章:

php - 在 PHP 命名空间中使用函数

Python改变函数中的变量和数组?

bash - AWK:在给定位置和变量中的新值的情况下替换字符串中的字段

lua - 如何在 Lua 中查找和替换包含特定字符的单词?

rss - 如何从 RSS 中获取最后一个标题?

sockets - Lua 套接字 - 异步事件

python - 功能问题

JavaScript:函数及其作用域/词法环境如何传递?

javascript - 递归提示函数返回null

Javascript - 将函数参数传递给变量名