Lua中的所有全局变量都驻留在一个可用作全局变量的表中_G
(是,_G._G == _G).因此,如果要列出所有全局变量,可以使用pairs()
以下方法遍历表:
function whos()
for k,v in pairs(_G) do
print(k, type(v), v) -- you can also do more sophisticated output here
end
end
Run Code Online (Sandbox Code Playgroud)
请注意,这也将为您提供所有Lua基本功能和模块.您可以通过检查表中的值来筛选它们,当没有定义Lua提供的全局变量时,您可以在启动时创建该值:
-- whos.lua
local base = {}
for k,v in pairs(_G) do
base[k] = true
end
return function()
for k,v in pairs(_G) do
if not base[k] then print(k, type(v), v) end
end
end
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用此模块,如下所示:
$ lua
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
> whos = require 'whos'
> a = 1
> b = 'hello world!'
> whos()
a number 1
b string hello world!
whos function function: 0x7f986ac11490
Run Code Online (Sandbox Code Playgroud)
局部变量有点难度 - 你必须使用Lua的调试工具 - 但鉴于你想要以交互方式使用它,你应该只需要全局变量.
归档时间: |
|
查看次数: |
432 次 |
最近记录: |