gpt4 book ai didi

Lua:任意数量的返回值

转载 作者:行者123 更新时间:2023-12-04 14:25:13 24 4
gpt4 key购买 nike

经过很长一段时间的 C++ 学习后,我又回到了 Lua,目前我正在尝试重新思考一些更复杂的事情。

想象一个小的实用函数,看起来像这样,可以为任意数量的参数多次调用一个函数:

-- helper to call a function multiple times at once
function smartCall(func, ...)
-- the variadic arguments
local args = {...}
-- the table to save the return values
local ret = {}
-- iterate over the arguments
for i,v in ipairs(args) do
-- if it is a table, we unpack the table
if type(v) == "table" then
ret[i] = func(unpack(v))
else
-- else we call the function directly
ret[i] = func(v)
end
end
-- return the individual return values
return unpack(ret)
end

然后我可以做这样的事情:

local a,b,c = smartCall(math.abs, -1, 2.0, -3.0)
local d,e,f = smartCall(math.min, {1.0, 0.3}, {-1.0, 2.3}, {0.5, 0.7})

这行得通,但我想知道是否有更方便的方法,因为我的版本涉及大量解包和临时表。

类型

最佳答案

如果用C 编写smartCall,会更简单,而且不需要创建表。不过,我不知道这对您是否方便。

关于Lua:任意数量的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8730817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com