Lua:如何从\_G中提取函数?

目前,我正在尝试显示存储在_G中的所有内容。 在_G中读写表格非常容易。

有谁知道如何使用函数类型做同样的事情?

我的目标是返回一个包含存储在_G表中的函数的字符串。

干杯,谢谢 Max

点赞
用户7253993
用户7253993

展示 _G 内的所有内容,你可以这样做:

for n in pairs(_G) do print(n) end

如果您只想获取 type 函数:

 for n in pairs(_G) do
     if n=="type" then
         print(n)
     end
 end

您可以在 此处 检查上述输出。

2018-02-28 20:54:10
用户6834680
用户6834680

你可以获得有关函数的唯一信息是参数名称(除非调试信息被剥离)。

local function print_func(func)
   local addr = tostring(func):match'%X(%x+)%X*$'
   local info, params = debug.getinfo(func, 'u'), {}
   for i = 1, info.nparams do
      params[i] = debug.getlocal(func, i)
   end
   if info.isvararg then
      params[#params+1] = '...'
   end
   print('function@'..addr..'('..table.concat(params, ', ')..')')
end

local function example(x, y) return x+y end

print(print)     --> function: 000007FEE30B6900
print(example)   --> function: 00000000005CEFD0

print_func(print)     --> function@000007FEE30B6900(...)
print_func(example)   --> function@00000000005CEFD0(x, y)

附言:在某些语言(例如 Smalltalk)中,函数对象包含其作为其属性公开的源代码。

2018-03-01 07:11:58