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