Как вызывать
Functions.collections.cleanArray(array, except, invert)
Запишите его как зависимость с именем Functions.collections.cleanArray (принятие автодополнения делает это само) и вызывайте по этому имени.
Что делает
Удалить записи на месте, по умолчанию оставляя только ключи, перечисленные в значениях except. При invert true перечисленные ключи удаляются, а неперечисленные остаются. Без списка исключений по умолчанию удаляются все записи, а при invert true все сохраняются. При входе nil ничего не происходит.
Аргументы
| Имя | Тип | Что делает |
|---|---|---|
array | table | nil | Изменяемая таблица или nil, чтобы ничего не делать. |
except | table | nil | Необязательная коллекция значений-ключей, выбирающих записи; её собственные ключи игнорируются. |
invert | boolean | nil | true удаляет перечисленные записи; false или nil сохраняет только перечисленные. |
Возвращает
| 1 | ... | Нет возвращаемых значений. Переданная таблица изменяется на месте. |
|---|
Издания
Встроенные помощники регистрируются во всех изданиях. Различается игровой API, который они читают; если нужного API нет, помощник использует запасной вариант или возвращает nil с причиной.
Не читает игровой API напрямую.
Пример
local seen = { Moonfire = true, Sunfire = true, Rake = true }
-- invert: remove the listed keys, keep the rest
Functions.collections.cleanArray(seen, { "Rake" }, true)
return seen.Rake == nil and seen.Moonfire == trueИсходный код
Functions/collections.lua, строка 109. В игре только для чтения; «Дублировать» создаёт редактируемую копию.
Functions.collections.cleanArray(array, except, invert)
if array == nil then
return
end
if invert == nil then
invert = false
end
for k,_ in pairs(array) do
local skip = invert
if except ~= nil then
for _,v2 in pairs(except) do
if (k == v2) then
skip = not invert
break
end
end
end
if not skip then
array[k] = nil
end
end