Pregunta

Tengo una tabla lua que utilizo como un HashMap, es decir, con claves de cadena:

local map = { foo = 1, bar = 2 }

Me gustaría "pop" un elemento de esta tabla identificada por su llave. Hay un método table.remove(), pero sólo se necesita el índice del elemento para retirar (es decir, un número) y no una clave genérica. Me gustaría ser capaz de hacer table.remove(map, 'foo') y aquí está la forma en que he implementado:

function table.removekey(table, key)
    local element = table[key]
    table[key] = nil
    return element
end

¿Hay una mejor manera de hacer eso?

¿Fue útil?

Solución

No, el valor de ajuste de la clave para nil es la forma aceptada de la eliminación de un elemento en la parte HashMap de una mesa. Lo que está haciendo es estándar. Sin embargo, me gustaría recomendar no anulando table.remove() - para la parte de conjunto de una mesa, la funcionalidad table.remove predeterminado () incluye la renumeración de los índices, que a su anulación no haría. Si desea agregar su función al conjunto de funciones table, entonces probablemente nombraría algo así como table.removekey() o algo así.

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