Domanda

Ho una tabella lua che uso come un HashMap, vale a dire con le chiavi stringa:

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

Vorrei "pop" un elemento di questa tabella identificata dalla sua chiave. C'è un metodo table.remove(), ma richiede solo l'indice dell'elemento da rimuovere (ad esempio un numero) e non una chiave generica. Mi piacerebbe essere in grado di fare table.remove(map, 'foo') ed ecco come ho implementato è:

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

C'è un modo migliore per farlo?

È stato utile?

Soluzione

No, l'impostazione il valore della chiave per nil è il modo accettato di rimuovere un elemento nella parte hashmap di una tabella. Quello che stai facendo è di serie. Tuttavia, io consiglierei di non ignorando table.remove() - per la porzione di matrice di una tabella, la funzionalità predefinita table.remove () include rinumerazione degli indici, che il vostro sostituzione non lo farei. Se si vuole aggiungere la funzione per la funzione impostata table, allora probabilmente sarei nomino qualcosa come table.removekey() o qualcosa del genere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top