Vielleicht sind Sie auf der Suche nach so etwas wie folgt aus:
function varmapn(func, ...)
local args, result = { ... }, {}
for arg_i = 1, #(args[1]) do
local call_args = {}
for arg_list = 1, #args do
table.insert(call_args, args[arg_list][arg_i])
end
table.insert(result, func(table.unpack(call_args)))
end
return result
end
Probe Interaktion:
> answer = varmapn(function (a, b) return a+b end, {1, 7, 3}, {5, 4, 8})
> print(answer)
table: 0x970eb0
> for i = 1, 3 do print(answer[i]) end
6
11
11
Oder hier eine etwas aufwendigere Funktion ist, die allgemeiner ist. Für Argumentlisten dauert es Arrays oder dauert es Tabellen mit beliebigen Tasten:
function mapn(func, ...)
local args, call_args = { ... }, {}
local result = {}
for k in pairs(args[1]) do
call_args[k] = {}
end
for arg_list, v in pairs(args) do
for k in pairs(args[1]) do
table.insert(call_args[k], v[k])
end
end
for k, v in pairs(call_args) do
result[k] = func(table.unpack(v))
end
return result
end
Probe Interaktion:
> answer = mapn(function (a, b) return a+b end, {x=1, y=7, z=3}, {x=5, y=4, z=8})
> for k,v in pairs(answer) do print(k .. " = " .. v) end
z = 11
y = 11
x = 6
> answer = mapn(function (a, b) return a+b end, {1, 7, 3}, {5, 4, 8})
> for i = 1, 3 do print(answer[i]) end
6
11
11
Bitte keine Fragen ohne eine akzeptierte Antwort hinterlassen. Sie haben dies vor einer Woche gepostet und haben seitdem 3 Antworten bekommen. Akzeptierte Antworten helfen zukünftigen Benutzern, ihr Problem schneller zu lösen, und belohnt die Person, die Ihnen am meisten geholfen hat. Wenn keine der 3 Antworten geholfen hat, vielleicht mehr auf Ihr Problem hinweisen. – warspyking