Справочник › Справочник функций › Functions

Functions.collections.deepcopy

общедоступный

Как вызывать

Functions.collections.deepcopy(array, except, invert)

Запишите его как зависимость с именем Functions.collections.deepcopy (принятие автодополнения делает это само) и вызывайте по этому имени.

Что делает

Создать неглубокую отфильтрованную копию, несмотря на историческое название deepcopy. Вложенные значения сохраняют исходную идентичность, метатаблица источника не копируется. По умолчанию исключаются ключи, перечисленные в значениях except; invert true включает только перечисленные ключи. При входе nil возвращается nil.

Аргументы

ИмяТипЧто делает
arraytable | nilТаблица для неглубокого копирования или nil.
excepttable | nilНеобязательная коллекция значений-ключей, выбирающих записи; её собственные ключи игнорируются.
invertboolean | niltrue включает только перечисленные записи; false или nil исключает перечисленные.

Возвращает

1table | nilНовая неглубокая отфильтрованная таблица или nil при входе nil.

Издания

Встроенные помощники регистрируются во всех изданиях. Различается игровой API, который они читают; если нужного API нет, помощник использует запасной вариант или возвращает nil с причиной.

Не читает игровой API напрямую.

Как его вызывает аддон

и ещё 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

Назад: Справочник функций