function - 带有 arg 的 Lua 函数传递给带有 arg 的另一个函数

标签 function lua

这是我正在尝试做的事情的原始想法。

function a(str)
    print(str)
end

function b(str)
    print(str)
end

function c(str)
    print(str)
end

function runfunctions(...)
    local lst = {...}
    lst.startup()
end

local n1 = a('1')
local n2 = b('2')
local n3 = c('3')

runfunctions(n3,n1,n2)

很少有函数必须作为参数传递给其他函数并按顺序执行。一旦它们中的任何一个被执行,它就不能被执行 msec 所以下一个将被执行,以避免只执行其中的几个而直到最后一个才运行。

最佳答案

你需要闭包。

在您的代码中,函数abc 都执行并且不返回任何内容。相反,返回一个完成工作的闭包(但现在不执行):

function a(str)
    return function() print(str) end
end

然后在需要的时候执行函数:

function runfunctions(...)
    for _, v in ipairs{...} do
        v()
    end
end

关于function - 带有 arg 的 Lua 函数传递给带有 arg 的另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33613501/

相关文章:

lua - 如何使用lua设置bash环境变量

javascript - lua.vm.js insideHTML 错误

lua - 在 Lua 中,如何获取包括 nil 在内的所有参数以获取可变数量的参数?

c - 给定代码的输出说明

c++ - 多个不同的构造函数作为函数参数

r - 从函数调用将变量传递给 ggpubr

loops - 在Lua中找到两个数组之间的差异

r - R 中的 `qr.qy()` 函数

.net - 程序集中的模板函数不可见

list - 在Lua中从未知数量的列表中递归地构建一个表