Pregunta

Por ejemplo:

items = {
    [753] = {
    },
    [192] = {
    },
    [789] = {
    },
    [791] = {
    },
    [790] = {
    },
    [776] = {
    },
}

Me gustaría quitar 789 y todos los datos dentro de ella. He intentado tanto: table.remove (artículos, 2); y table.remove (artículos, 789); (No estaba segura de cómo funcionaba la indexación) sin suerte.

¿Fue útil?

Solución

Es tan fácil como

items[789] = nil

En Lua, si una clave en una tabla tiene un valor nil, entonces es como si no existe la clave.

> t = { [5] = {}, [10] = {} }
> for k,v in pairs(t) do print(k,v) end
5       table: 0037CBC0
10      table: 0037CBE8
> t[5] = nil
> for k,v in pairs(t) do print(k,v) end
10      table: 0037CBE8

Consulte también Progamming en Lua, sección 2.5 . (A pesar de que la versión en línea está escrito para Lua 5.0, esto todavía se aplica a Lua 5.1)

  

... puede asignar cero a un campo de tabla para eliminarlo.

Cuando se asigna nil a su índice, que no lo hace explícitamente eliminar lo que se almacena previamente en ese índice; pero lo hace bajar el recuento de referencia para lo que estaba almacenada allí, por lo que es potencialmente elegibles para la recolección de basura.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top