Concat двух значений переменных с пробелом в Lua - PullRequest
0 голосов
/ 25 января 2020

У меня есть строка, которую я пытаюсь создать из переменной, содержащей строки, пробел и другую строку (целое число). Строка должна состоять из номеров индексов, основанных на количестве элементов в таблице с именем "master_table" Первый раз через переменную "indexes_to_process" ноль. Я пытаюсь использовать строфу ниже, чтобы установить его. Тем не менее, он по-прежнему содержит значение nil, даже если x установлен правильно. Я уверен, что это какой-то синтаксис, который я рисую пустым. Я пробовал несколько изменений в этом, и ничего не работает. Буду признателен за любые предложения. Цель состоит в том, чтобы иметь переменную, которая содержит следующее:

"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" и так далее. Я делаю это, чтобы иметь переменный элемент управления l oop от тысяч до миллионов номеров индексов. , , Это было мое решение для медленной обработки таблицы после 100К элементов. Ie., Я хочу иметь возможность добавлять номера индексов к переменной "indexes_to_process", чтобы l oop попадал в этот элемент. Это избавляет меня от обработки пустых элементов в таблице, поскольку обработка всех элементов таблицы занимает слишком много времени после того, как я попал в диапазон 100 КБ, и у меня может быть 10 000 элементов, которые необходимо обработать.

Заранее спасибо!

if indexes_to_process == nil then
                            for x = 1,table.maxn(master_table) do
                                print ("x:"..x)                         --uncomment for debug
                                indexes_to_process = (indexes_to_process," ",x)
                                print ("indexes to process",indexes_to_process)         --uncomment for debug
                            end
end

1 Ответ

0 голосов
/ 25 января 2020

вот 2 примера:

local master_table = {1,2,3,4,5,6}
local indexes_to_process

-- first
indexes_to_process = table.concat(master_table," ")
print(indexes_to_process)

-- second
indexes_to_process = nil
local temp = {}
for k,v in ipairs(master_table) do
   temp[#temp+1] = v .." "
end
indexes_to_process = table.concat(temp)
print(indexes_to_process)

в любом случае, никогда не склеивайте строки внутри большого l oop, потребление памяти и падение производительности, как:

indexes_to_process = indexes_to_process.. " "..x   -- bad idea

PS : если вы думаете, что значение x может быть ноль, используйте:

x = (x or "") .. "text"
...