2016-01-21 3 views
1

Есть ли простой способ объединить две таблицы, которые являются последовательностями? НапримерОбъединить последовательности таблиц в lua

a = {1, 2, 3} 
b = {5, 6, 7} 
c = cat(a,b) 

где c будет таблица {1,2,3,5,6,7}?

+2

Попробуйте взглянуть на [это] (http://stackoverflow.com/questions/1283388/lua-merge-tables) и [this] (http://stackoverflow.com/questions/1410862/concatenation-of -tables-in-lua) –

+1

Отличный и точно сформулированный вопрос. К сожалению, это дубликат проблем с более низким качеством. –

ответ

1
function cat(t, ...) 
    local new = {unpack(t)} 
    for i,v in ipairs({...}) do 
     for ii,vv in ipairs(v) do 
      new[#new+1] = vv 
     end 
    end 
    return new 
end 

Он использует итерацию, чтобы добавить элементы каждого массива к новому.

Следует также отметить, что {unpack (t)} будет работать только в том случае, если у вас меньше определенного количества элементов из-за того, как в Lua работают кортежи. Это зависит от того, что вы делаете, но если оно мало, вам, вероятно, не о чем беспокоиться.

+0

Вам не хватало единственного места в первой строке, поэтому блок кода не работал;) Помните: четыре пробела делают код :) –

+0

Обратите внимание, что '{unpack (t)}' работает только до один миллион элементов таблицы (или 15000, если у вас есть 16 бит 'int'). – siffiejoe

+0

@siffie Последнее, что я проверил, было 8K ... – warspyking

Смежные вопросы