Sto cercando di capire l'equivalente di:Come posso aggiungere a una tabella in Lua
foo = []
foo << "bar"
foo << "baz"
Io non voglio avere a venire con un indice di incremento. C'è un modo semplice per farlo?
Sto cercando di capire l'equivalente di:Come posso aggiungere a una tabella in Lua
foo = []
foo << "bar"
foo << "baz"
Io non voglio avere a venire con un indice di incremento. C'è un modo semplice per farlo?
Si sta cercando la funzione insert
, trovata nella sezione table
della libreria principale.
foo = {}
table.insert(foo, "bar")
table.insert(foo, "baz")
Ah sì: foo = {}; table.insert (foo, "bar"); table.insert (foo, "baz") – drewish
Accidenti, hai risposto usando la funzione 'insert' mentre stavo scrivendo la mia risposta. *Grandi menti pensano allo stesso modo*. :-) – cybermonkey
Esattamente. Non hai nemmeno bisogno del punto e virgola, ma puoi averli se lo desideri. – rsethc
foo = {}
foo[#foo+1]="bar"
foo[#foo+1]="baz"
questo funziona perché l'operatore #
calcola la lunghezza della lista. La lista vuota ha lunghezza 0, ecc
Se si utilizza Lua 5.3+, allora si può fare quasi esattamente quello che volevi:
foo = {}
setmetatable(foo, { __shl = function (t,v) t[#t+1]=v end })
_= foo << "bar"
_= foo << "baz"
espressioni non sono dichiarazioni in Lua e hanno bisogno di essere usato in qualche modo.
Spiega perché il tuo metodo funziona .. – cybermonkey
Non sono innamorato di come sembra ma è bello sapere che funziona. – drewish
È leggermente più veloce di 'table.insert'. – Tim
io personalmente faccio uso della funzione table.insert
:
table.insert(a,"b")
In questo modo si evita di dover iterare l'intera tabella quindi risparmio di risorse preziose come la memoria e il tempo.
L'intera documentazione è disponibile all'indirizzo http://www.lua.org/manual/5.2/ – rsethc
oh questo è davvero utile. Google continuava a indicarmi http://www.lua.org/pil/2.5.html che è fondamentalmente inutile. – drewish