Suena como una pregunta de "déjame buscarlo en Google", pero de alguna manera no puedo encontrar una respuesta. El #
operador Lua solo cuenta las entradas con teclas enteras, y también lo hace 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"
¿Cómo obtengo el número de todas las entradas sin contarlas?
#
operador está mal definido. Esto es fácilmente reparable: en primer lugar, hacer #
determinista y, en segundo lugar, introducir un nuevo operador o función para obtener el maldito recuento. Fin de la historia ... ¿Por qué tienen que ser tan tercos? :)
dictionary[value] = #dictionary + 1
, donde#
representa el número de todos los objetos. Lo que me pregunto es por qué usted no desea que esto: en todos los cuerdo casos de uso de # (véase la respuesta por kaizer.se), el recuento de todos los objetos es exactamente igual a lo que ya # devuelve; parece que hacer que # cuente todo es estrictamente una mejora. Por supuesto que soy un novato de Lua y podría estar perdiendo el punto.