我将把一个函数传递给另一个函数,该函数应该与传递的函数一起操作。例如:
handler(fun1("foo",2))
handler(fun2(1e-10))
处理程序类似于多次调用传递的函数。 我要将处理程序 fun1、fun2 绑定(bind)到 C 函数。 fun1 和 fun2 将返回一些用户数据,并带有指向某个 cpp 类的指针,以便我可以进一步恢复它是哪个函数。
现在的问题是 fun1 和 fun2 将在传递给处理程序之前被调用。但我不需要这个,我需要的是函数的种类和它的参数。但是,我应该能够在没有处理程序的情况下单独调用 fun1 和 fun2:
fun1("bar",3)
fun2(1e-5)
是否可以获取调用函数的上下文?
在输入问题时,我意识到我可以执行以下操作
handler(fun1, "foo",2);
handler(fun2, 1e-10);
最佳答案
可能最好的方法是传入函数以及您想要在表中调用的参数。
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})
关于lua函数作为C中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10835395/