Я возвращаюсь в Lua после долгого времени только на C ++ и сейчас пытаюсь снова обернуться вокруг некоторых из более сложных вещей.
представьте себе небольшую служебную функцию, которая выглядит следующим образомЧтобы вызвать функцию несколько раз для произвольного числа аргументов:
-- 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})
это работает, но мне интересно, если естьболее удобный способ, так как моя версия включает в себя множество распакованных и временных таблиц.
ty