Klingt nach einer Frage "Lass es mich für dich googeln", aber irgendwie kann ich keine Antwort finden. Der Lua- #
Operator zählt nur Einträge mit Ganzzahlschlüsseln, und zwar auch 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"
Wie erhalte ich die Anzahl aller Einträge, ohne sie zu zählen?
#
Operator nur schlecht definiert. Dies ist so einfach zu beheben: Erstens #
deterministisch machen und zweitens einen neuen Operator oder eine neue Funktion einführen, um die verdammte Anzahl zu erhalten. Ende der Geschichte ... Warum müssen sie so stur sein? :)
dictionary[value] = #dictionary + 1
, wo#
die Anzahl der repräsentiert alle Objekte. Was ich frage mich, warum Sie nicht diese wollen: in allen vernünftigen Anwendungsfälle für # (siehe Antwort von kaizer.se), die Anzahl aller Objekte genau gleich was # bereits zurückkehrt; Es scheint, als wäre es eine Verbesserung, # alles zählen zu lassen. Natürlich bin ich ein Lua-Neuling und könnte den Punkt verfehlen.