这是我正在尝试做的事情的原始想法。
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 所以下一个将被执行,以避免只执行其中的几个而直到最后一个才运行。
最佳答案
你需要闭包。
在您的代码中,函数a
、b
和c
都执行并且不返回任何内容。相反,返回一个完成工作的闭包(但现在不执行):
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/