es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo desplazar todas las tablas hacia abajo después de eliminar una tabla?

En este código:

t = {
    num = '',
}

`t[0].num = ‘0’
t[1].num = ‘1’
t[2].num = ‘2’

¿Hay alguna forma de eliminar `t[0]`, luego desplazar todos los valores de la tabla hacia abajo, para que después se vea así:

t[0].num = ‘1’
t[1].num = ‘2’

Ejemplo con funciones imaginarias:

t = {
num = ”,
}


`t[0].num = '0' t[1].num = '1' t[2].num = '2'` ```lua for i=0,tableLength(t) do print(t[i]) end --Output: 012

remove(t[0])

for i=0,tableLength(t) do
    print(t[i])
end
--Output: 12
Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de eliminar t[0] y desplazar todos los valores de la tabla hacia abajo. En Lua, las tablas son arreglos asociativos, lo que significa que las claves no tienen que ser enteros consecutivos comenzando desde 0 o 1. Podemos usar la función table.remove para eliminar el elemento en t[0] y luego usar un bucle para desplazar todos los elementos restantes un índice hacia abajo:

    t = {
        {}, -- usa una tabla vacía para representar cada elemento
        {num = '0'},
        {num = '1'},
        {num = '2'}
    }
    
    -- elimina el elemento en t[0] y desplaza el resto de la tabla hacia abajo
    table.remove(t, 1)
    for i = 1, #t do
        t[i-1] = t[i]
    end
    t[#t] = nil -- elimina el último elemento, que ahora es una duplicación del penúltimo elemento
    
    -- verifica el contenido de la tabla
    for i = 0, #t-1 do
        print(t[i].num) -- debería mostrar '1', '2'
    end
    

    Ten en cuenta que modifiqué ligeramente el código original para usar una tabla anidada para cada elemento, ya que no podemos agregar propiedades directamente a un número. Además, en Lua, los índices de las tablas generalmente comienzan en 1 en lugar de 0, por lo que ajusté el bucle en consecuencia.

Comments are closed.