Как сделать table.insert (x) из table.remove (x) - PullRequest
0 голосов
/ 14 мая 2019

Я хочу манипулировать таблицей lua, добавляя и удаляя элементы. Я бы использовал table.remove (x), store (x) в массив, а затем вставил бы его обратно с table.insert (x).

a = {}
table.remove(tab, a) -- From tab into a
...
table.insert(tab, a) -- From a into tab

Это не сработает.

1 Ответ

2 голосов
/ 14 мая 2019

Просто потому, что это не так.

Пожалуйста, обратитесь к table.insert и table.remove Справочного руководства Lua.Это для Lua 5.1, если вы используете другую версию, тогда вы сможете легко найти нужную.

Вы можете перемещать элементы между таблицами следующим образом:

a = {}
table.insert(a, table.remove(tab)) -- From tab into a
...
table.insert(tab, table.remove(a)) -- From a into tab

Возможно, вам понадобитсячтобы проверить значение, возвращаемое remove:

local foo = table.remove(tab)
if type(foo) ~= "nil" then
    table.insert(a, foo)
end

Обратите внимание, что позиция по умолчанию для remove является последним элементом таблицы, а позиция по умолчанию для insert - после последнего элемента таблицы.Управление аргументом pos либо insert, либо remove может позволить вам реализовать различные варианты поведения.

Например, если вы хотите получить более похожее на прокрутку поведение (то, которое вы просили в предыдущем, теперь удалено, вопрос):

a = {}
local foo = table.remove(tab, 1)
if type(foo) ~= "nil" then table.insert(a, foo) end -- From tab into a
...
local bar = table.remove(a, 1)
if type(bar) ~= "nil" then table.insert(tab, bar) end -- From a into tab
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...