2012-03-27 8 views

答えて

8

Luaのすべてのグローバル変数は、グローバル変数_G(yes、_G._G == _G)として使用できるテーブルにあります。あなたはすべてのグローバル変数を一覧表示したい場合はそのため、あなたはpairs()を使用して、テーブルを反復処理することができます。

注これはまた、あなたのすべての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 
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を使用する必要がありますが、対話的に使用したい場合は、グローバルのみが必要です。

関連する問題