2012-03-27 32 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--但是如果你想交互使用它,你應該只需要全局變量。