3
Octave/Matlab/IPythonの "whos"コマンドに相当するLuaは何ですか?私はLuaをインタラクティブに学習しようとしており、現在どの変数が定義されているのかを見たいと思っています。LuaインタプリタのMatlab "whos"コマンドに相当しますか?
Octave/Matlab/IPythonの "whos"コマンドに相当するLuaは何ですか?私はLuaをインタラクティブに学習しようとしており、現在どの変数が定義されているのかを見たいと思っています。LuaインタプリタのMatlab "whos"コマンドに相当しますか?
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を使用する必要がありますが、対話的に使用したい場合は、グローバルのみが必要です。