Referência › Referência de funções › Functions

Functions.collections.deepcopy

pública

Chame como

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

Registre-a como uma dependência chamada Functions.collections.deepcopy (aceitar o preenchimento automático faz isso) e depois chame-a por esse nome.

O que faz

Cria uma cópia filtrada rasa, apesar do nome histórico deepcopy. Os valores aninhados mantêm as identidades originais e a metatabela de origem não é copiada. Por padrão, exclui as chaves listadas entre os valores de except; invert true inclui apenas as chaves listadas. Uma entrada nil retorna nil.

Argumentos

NomeTipoO que faz
arraytable | nilTabela a copiar de forma rasa, ou nil.
excepttable | nilColeção opcional de valores de chave que selecionam entradas; as próprias chaves dela são ignoradas.
invertboolean | nilTrue inclui apenas as entradas listadas; false ou nil excluem as entradas listadas.

Retornos

1table | nilNova tabela filtrada rasa, ou nil para uma entrada nil.

Edições

As funções auxiliares integradas são registradas em todas as edições. O que muda é a API do jogo que elas leem; quando uma está ausente, a função auxiliar recorre a uma alternativa ou retorna nil com um motivo.

Não lê nenhuma API do jogo diretamente.

Como o addon a chama

  • Atacável (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }),
  • Lançamento interrompível (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }),
  • Canalização interrompível (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }),
  • Classe (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }),
  • Classificação da unidade (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }),
  • Histórico de ações de combate (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet", "target" }, true),
  • Tempo do histórico de ações de combate (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet", "target" }, true),
  • Tipo de criatura (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }),

e mais 12: Hostil (widget), Em grupo (widget), Imune (widget), É o mesmo que (widget), Marcado para JxJ (widget), Resistente (widget), Função (widget), Fugitivo (widget), Atributo do personagem (widget), Tem bônus roubável (widget), Ameaça (widget), JxJ da zona (widget)

Código-fonte

Functions/collections.lua, linha 141. Somente leitura no jogo; Duplicar cria uma cópia editável.

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

Voltar para Referência de funções