Tengo una tabla lua que uso como hashmap, es decir, con claves de cadena:
local map = { foo = 1, bar = 2 }
Me gustaría "hacer estallar" un elemento de esta tabla identificado por su clave. Hay un table.remove()
método, pero solo se necesita el índice del elemento a eliminar (es decir, un número) y no una clave genérica. Me gustaría poder hacerlo 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
¿Existe una mejor manera de hacerlo?
Respuestas:
No, establecer el valor de la clave en
nil
es la forma aceptada de eliminar un elemento en la parte del mapa de hash de una tabla. Lo que estás haciendo es estándar. Sin embargo, recomendaría no anulartable.remove()
: para la parte 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 altable
conjunto de funciones, entonces probablemente lo nombraría algo comotable.removekey()
o algo así.fuente
table.removekey()
sería mi mejor opción).table.insert
ytable.remove
al espacio de nombres local si los uso con frecuencia, a menudo como algo comotinsert()
ytremove()
.