>>25069
Как минимум твоё извращение можно завернуть в мета-поведение, перегрузив оператор +.
function table_merge (mytable, newtable)
for i = 1, table.maxn(newtable) do
table.insert(mytable, table.maxn(mytable)+1,newtable[i])
end
return mytable
end
acc_table = setmetatable({ }, { __add = table_merge })
merged_table = acc_table + foo() + bar() + baz()
print("Merged tables:")
print(unpack(merged_table))
Таким образом не придется писать страшных крокодилов, хотя суть операции и не поменяется. У меня оно выводит:
Merged tables:
1 2 3 4 5 6 7 8 9
Где:
function foo ()
return { 1, 2, 3 }
end
function bar ()
return { 4, 5 }
end
function baz ()
return { 6, 7, 8, 9 }
end
Если интересно, немного инфы по мета-таблицам здесь:
https://www.tutorialspoint.com/lua/lua_metatables.htm