Sembra una domanda "fammi andare su Google per te", ma in qualche modo non riesco a trovare una risposta. L' #
operatore Lua conta solo le voci con chiavi intere e quindi table.getn
:
tbl = {}
tbl["test"] = 47
tbl[1] = 48
print(#tbl, table.getn(tbl)) -- prints "1 1"
count = 0
for _ in pairs(tbl) do count = count + 1 end
print(count) -- prints "2"
Come posso ottenere il numero di tutte le voci senza contarle?
#
operatore è semplicemente mal definito. Questo è così facilmente risolvibile: in primo luogo, rendere #
deterministico, e in secondo luogo, introdurre un nuovo operatore o funzione per ottenere il conteggio maledetto. Fine della storia ... Perché devono essere così testardi? :)
dictionary[value] = #dictionary + 1
, dove#
rappresenta il numero di tutti gli oggetti. Quello che mi chiedo è perché non vuoi questo: in tutti i casi di uso sano per # (vedi risposta di kaizer.se), il conteggio di tutti gli oggetti è esattamente uguale a ciò che # restituisce già; sembra che fare # contare tutto sia strettamente un miglioramento. Ovviamente sono un principiante di Lua e potrebbe non capire il punto.