lua函数作为C中的参数

标签 lua

我将把一个函数传递给另一个函数,该函数应该与传递的函数一起操作。例如:

     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/

相关文章:

lua - 如何使用模式仅缩短匹配的字符串

python - python 中的 XMPP 服务器

nginx - 配置 nginx 以使用 key 从 redis 获取 url 并将 url 代理到其他服务器

c - luaL_openlibs 的隐式声明

string - Lua - gmatch 科学记数法字符串到数字

c++ - std::tuple<> 中的参数包装然后应用

lua - 如何将目录永久添加到 Lua 搜索路径?

lua - 确定 Lua 表是否为空(不包含任何条目)的最有效方法?

c++ - 从 C++ 调用未知(按名称)lua 函数

random - Lua - 在每次运行/事件中随机选择 3 个数字(从 250 个数字中选择),但不包括一个