Referencia › Referencia de funciones › Functions

Functions.collections.deepcopy

pública

Llamar como

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

Regístrala como dependencia con el nombre Functions.collections.deepcopy (aceptar la sugerencia de autocompletado lo hace por ti) y luego llámala con ese nombre.

Qué hace

Crea una copia filtrada superficial, a pesar del nombre histórico deepcopy. Los valores anidados conservan sus identidades originales y no se copia la metatabla de origen. Por defecto excluye las claves que aparecen entre los valores de except; invert true incluye solo las claves indicadas. Una entrada nil devuelve nil.

Argumentos

NombreTipoQué hace
arraytable | nilTabla que se copiará superficialmente, o nil.
excepttable | nilColección opcional de valores de clave que seleccionan entradas; sus propias claves se ignoran.
invertboolean | nilTrue incluye solo las entradas indicadas; false o nil excluyen las entradas indicadas.

Retornos

1table | nilTabla nueva filtrada superficialmente, o nil para una entrada nil.

Ediciones

Las funciones auxiliares integradas se registran en todas las ediciones. Lo que cambia es la API del juego que leen; donde falta alguna, la función auxiliar recurre a una alternativa o devuelve nil con un motivo.

No lee directamente ninguna API del juego.

Cómo la llama el addon

  • Atacable (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }),
  • Lanzamiento interrumpible (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }),
  • Canalización interrumpible (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }),
  • Clase (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }),
  • Clasificación de la unidad (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }),
  • Historial de acciones de combate (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet", "target" }, true),
  • Tiempo del historial de acciones 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" }),

y 12 más: Hostil (widget), En grupo (widget), Inmune (widget), Es la misma que (widget), Marcado para JcJ (widget), Resistente (widget), Rol (widget), Huidizo (widget), Estadística del personaje (widget), Tiene beneficio robable (widget), Amenaza (widget), JcJ de la zona (widget)

Código fuente

Functions/collections.lua, línea 141. Solo lectura en el juego; Duplicar crea una copia editable.

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

Volver a Referencia de funciones