Parece uma pergunta "deixe-me pesquisar no google por você", mas de alguma forma não consigo encontrar uma resposta. O #
operador Lua conta apenas entradas com chaves inteiras e o mesmo 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"
Como obtenho o número de todas as entradas sem contá-las?
#
operador está mal definido. Isso é tão facilmente corrigível: primeiro, faça #
determinístico e, em segundo lugar, introduza um novo operador ou função para obter a contagem danada. Fim da história ... Por que eles têm que ser tão teimosos? :)
dictionary[value] = #dictionary + 1
, onde#
representa o número de todos os objetos. O que me pergunto é por que você não quer isso: em todos os casos de uso sãos para # (veja a resposta em kaizer.se), a contagem de todos os objetos é exatamente igual ao que # já retorna; parece que fazer # contar tudo é estritamente uma melhoria. Claro que sou novato em Lua e pode estar perdendo o objetivo.