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
| Nome | Tipo | O que faz |
|---|---|---|
array | table | nil | Tabela a copiar de forma rasa, ou nil. |
except | table | nil | Coleção opcional de valores de chave que selecionam entradas; as próprias chaves dela são ignoradas. |
invert | boolean | nil | True inclui apenas as entradas listadas; false ou nil excluem as entradas listadas. |
Retornos
| 1 | table | nil | Nova 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