打印Lua中当前作用域可访问的所有局部变量

我知道如何使用以下代码打印“所有”全局变量
for k,v in pairs(_G) do
    print("Global key",k,"value",v)
end

所以我的问题是如何为当前正在执行的函数可访问的所有变量执行此操作,这可以执行locals()为Python执行的操作。

解决方法

这是locals()函数的实现。它将从调用范围返回一个本地表:
function locals()
  local variables = {}
  local idx = 1
  while true do
    local ln,lv = debug.getlocal(2,idx)
    if ln ~= nil then
      variables[ln] = lv
    else
      break
    end
    idx = 1 + idx
  end
  return variables
end

请注意,在lua REPL中,每一行都是一个单独的块,具有不同的本地。此外,返回内部变量(名称以'(‘开头,如果你想删除它们):

> local a = 2; for x,v in pairs(locals()) do print(x,v) end
a   2
(*temporary)    function: 0x10359b38

感谢你的接纳。你已经解开了拼图的最后一块!

相关文章

1.github代码实践源代码是lua脚本语言,下载th之后运行thmai...
此文为搬运帖,原帖地址https://www.cnblogs.com/zwywilliam/...
Rime输入法通过定义lua文件,可以实现获取当前时间日期的功能...
localfunctiongenerate_action(params)localscale_action=cc...
2022年1月11日13:57:45 官方:https://opm.openresty.org/官...
在Lua中的table(表),就像c#中的HashMap(哈希表),key和...