titulo - ¿Cómo eliminar una entrada de tabla lua por su clave?
quitar ¶ word 2016 (1)
Tengo una tabla lua que uso como hashmap, es decir, con claves de cadena:
local map = { foo = 1, bar = 2 }
Me gustaría "mostrar" un elemento de esta tabla identificado por su clave. Hay un método table.remove()
, pero solo toma el índice del elemento para eliminar (es decir, un número) y no una clave genérica. Me gustaría poder hacer table.remove(map, ''foo'')
y así es como lo implementé:
function table.removekey(table, key)
local element = table[key]
table[key] = nil
return element
end
¿Hay una mejor manera de hacer eso?
No, establecer el valor de la clave en nil
es la forma aceptada de eliminar un elemento en la porción de hashmap de una tabla. Lo que estás haciendo es estándar. Sin embargo, recomendaría no reemplazar a table.remove()
: para la porción de matriz de una tabla, la funcionalidad predeterminada table.remove () incluye volver a numerar los índices, lo que su anulación no haría. Si desea agregar su función a la función de table
establecida, entonces probablemente la nombre algo así como table.removekey()
o algo así.