我要将一个函数传递给另一个函数,该函数应该与传递的函数一起运行。例如:
handler(fun1("foo",2))
handler(fun2(1e-10))
处理程序类似于多次调用传递的函数。 我要将处理程序,fun1,fun2绑定到C函数。 fun1和fun2将返回一些带有指向某个cpp-class的指针的用户数据,以便我可以进一步恢复它的功能。
现在的问题是fun1和fun2将在传递给处理程序之前被调用。但我不需要这个,我需要的是功能及其参数。但是,我应该能够在没有处理程序的情况下单独调用fun1和fun2:
fun1("bar",3)
fun2(1e-5)
是否可以从中调用函数的上下文?
在输入问题时,我意识到我可以执行以下操作
handler(fun1, "foo",2);
handler(fun2, 1e-10);
答案 0 :(得分:1)
可能最好的方法是使用您想要在表中调用的参数传递函数。
function handler(func, args)
-- do housekeeping here?
...
-- call the function
local ret = func(table.unpack(args))
-- do something with the return value?
end
handler(fun1, {"foo", 2})
handler(fun2, {1e-10})
答案 1 :(得分:1)
你可以在另一个函数中绑定对它的参数的调用,并将它传递给你的处理函数:
function handler(func)
-- call func, or store it for later, or whatever
end
handler(function() fun1("foo", 2) end)
handler(function() fun2(1e-10) end)
现在handler
不必担心存储和解包参数表,它只是调用一个函数。