转储 lua 带参数的函数
Dumping lua func with arguments
是否可以转储 Lua table 包括函数参数?
如果可以,我该怎么做?
我已经设法转储 tables 并使用地址函数,但我一直无法找到获取函数参数的方法,我尝试了不同的方法,但没有成功。
所以我想接收它们的真相转储 tables 和函数加上函数的参数。
输出应该是这样的:Function JumpHigh(Player, height)
我不知道这是否可行,但会非常方便。
Table 仅存储值。
如果table中存储了函数,那么它只是一个函数体,没有参数。如果应用参数,table 将仅存储该调用的最终结果。
也许您在谈论闭包 - 从其他函数返回的函数,从词法闭包中的顶级函数捕获一些参数?然后查看 debug.getupvalue()
函数来检查闭包的内容。
这是你要问的吗?
local function do_some_action(x,y)
return function()
print(x,y)
end
end
local t = {
func = do_some_action(123,478)
}
-- only function value printed
print "Table content:"
for k,v in pairs(t) do
print(k,v)
end
-- list function's upvalues, where captured arguments may be stored
print "Function's upvalues"
local i = 0
repeat
i = i + 1
local name, val = debug.getupvalue(t.func, i)
if name then
print(name, val)
end
until not name
请注意,存储的上值不是顶层函数的必要参数。它可能是一些局部变量,存储内部函数的预计算值。
另请注意,如果脚本被预编译为 Lua 字节码并剥离调试信息,那么您将不会获得上值的名称,它们将为空。
是否可以转储 Lua table 包括函数参数? 如果可以,我该怎么做?
我已经设法转储 tables 并使用地址函数,但我一直无法找到获取函数参数的方法,我尝试了不同的方法,但没有成功。
所以我想接收它们的真相转储 tables 和函数加上函数的参数。 输出应该是这样的:Function JumpHigh(Player, height)
我不知道这是否可行,但会非常方便。
Table 仅存储值。
如果table中存储了函数,那么它只是一个函数体,没有参数。如果应用参数,table 将仅存储该调用的最终结果。
也许您在谈论闭包 - 从其他函数返回的函数,从词法闭包中的顶级函数捕获一些参数?然后查看 debug.getupvalue()
函数来检查闭包的内容。
这是你要问的吗?
local function do_some_action(x,y)
return function()
print(x,y)
end
end
local t = {
func = do_some_action(123,478)
}
-- only function value printed
print "Table content:"
for k,v in pairs(t) do
print(k,v)
end
-- list function's upvalues, where captured arguments may be stored
print "Function's upvalues"
local i = 0
repeat
i = i + 1
local name, val = debug.getupvalue(t.func, i)
if name then
print(name, val)
end
until not name
请注意,存储的上值不是顶层函数的必要参数。它可能是一些局部变量,存储内部函数的预计算值。
另请注意,如果脚本被预编译为 Lua 字节码并剥离调试信息,那么您将不会获得上值的名称,它们将为空。