Cela ressemble à une question "laissez-moi google pour vous", mais je ne trouve pas de réponse. L' #
opérateur Lua ne compte que les entrées avec des clés entières, de même que 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"
Comment obtenir le nombre de toutes les entrées sans les compter?
#
opérateur est simplement mal défini. C'est si facile à corriger: premièrement, rendez #
déterministe, et deuxièmement, introduisez un nouvel opérateur ou une nouvelle fonction pour obtenir le sacré nombre. Fin de l'histoire ... Pourquoi doivent-ils être si têtus? :)
dictionary[value] = #dictionary + 1
, où#
représente le nombre de tous les objets. Ce que je me demande, c'est pourquoi vous ne voulez pas ceci: dans tous les cas d'utilisation sains de # (voir la réponse de kaizer.se), le nombre de tous les objets est exactement égal à ce que # renvoie déjà; il semble que faire # tout compter est strictement une amélioration. Bien sûr, je suis un débutant Lua et je manque peut-être le point.