Как вызывать
Functions.collections.deepcopy(array, except, invert)
Запишите его как зависимость с именем Functions.collections.deepcopy (принятие автодополнения делает это само) и вызывайте по этому имени.
Что делает
Создать неглубокую отфильтрованную копию, несмотря на историческое название deepcopy. Вложенные значения сохраняют исходную идентичность, метатаблица источника не копируется. По умолчанию исключаются ключи, перечисленные в значениях except; invert true включает только перечисленные ключи. При входе nil возвращается nil.
Аргументы
| Имя | Тип | Что делает |
|---|---|---|
array | table | nil | Таблица для неглубокого копирования или nil. |
except | table | nil | Необязательная коллекция значений-ключей, выбирающих записи; её собственные ключи игнорируются. |
invert | boolean | nil | true включает только перечисленные записи; false или nil исключает перечисленные. |
Возвращает
| 1 | table | nil | Новая неглубокая отфильтрованная таблица или nil при входе nil. |
|---|
Издания
Встроенные помощники регистрируются во всех изданиях. Различается игровой API, который они читают; если нужного API нет, помощник использует запасной вариант или возвращает nil с причиной.
Не читает игровой API напрямую.
Как его вызывает аддон
- Можно атаковать (widget)
local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }), - Применение можно прервать (widget)
local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }), - Поддержание можно прервать (widget)
local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }), - Класс (widget)
local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }), - Классификация юнита (widget)
local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }), - История боевых действий (widget)
local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet", "target" }, true), - Время в истории боевых действий (widget)
local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet", "target" }, true), - Тип существа (widget)
local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }),
и ещё 12: Враждебный (widget), В группе (widget), Невосприимчивость (widget), Совпадает с (widget), В режиме PvP (widget), Сопротивляемость (widget), Роль (widget), Исполнитель (widget), Характеристика персонажа (widget), Есть похищаемый полож. эффект (widget), Угроза (widget), PvP в зоне (widget)
Исходный код
Functions/collections.lua, строка 141. В игре только для чтения; «Дублировать» создаёт редактируемую копию.
Functions.collections.deepcopy(array, except, invert)
if array == nil then
return nil
end
if invert == nil then
invert = false
end
local rv = {}
for k,v 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
rv[k] = v
end
end
return rv