Lua:如何从_G中提取函数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua:如何从_G中提取函数?相关的知识,希望对你有一定的参考价值。
目前我正在尝试显示存储在_G中的所有内容。在_G中读写表格非常简单。
有谁知道如何对类型函数做同样的事情?
我的目标是返回一个包含存储在_G表中的函数的字符串。
干杯谢谢马克斯
答案
您可以获得的关于函数的唯一信息是其参数的名称(除非调试信息被剥离)。
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)中,函数对象将其源代码作为其属性公开。
另一答案
要显示_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
你可以检查上面的here的输出
以上是关于Lua:如何从_G中提取函数?的主要内容,如果未能解决你的问题,请参考以下文章