3
什么是Octave/Matlab/IPython“whos”命令的Lua等价物?我正在尝试以交互方式学习Lua,并希望看到当前定义了哪些变量。Lua解释器的Matlab“whos”命令的等价物?
什么是Octave/Matlab/IPython“whos”命令的Lua等价物?我正在尝试以交互方式学习Lua,并希望看到当前定义了哪些变量。Lua解释器的Matlab“whos”命令的等价物?
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--但是如果你想交互使用它,你应该只需要全局变量。