2012-03-27 72 views

回答

8

Lua中的所有全局变量都驻留在一个表中,作为全局变量_G(是,_G._G == _G)。因此,如果要列出所有的全局变量,你可以遍历使用pairs()表:

注意,这也将让您所有的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 

然后,您可以按以下方式使用此模块:

$ 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 

局部变量有点棘手 - 你必须使用Lua's debug facilities--但是如果你想交互使用它,你应该只需要全局变量。