On Thursday 31 March 2011 17:28:12 Arvid Enbom wrote:
Hello.
Run this for some strange results:
print(#{[1]=1,[2]=1,[4]=1,[8]=1,[16]=1,[32]=1,[64]=1,[128]=1})
According to the Lua reference manual, the length operator (#) is supposed
to return the highest consecutive numerical index. This means the above
code SHOULD return 2, because 3 is nil.
It returns 128.
See http://www.lua.org/manual/5.1/manual.html#2.5.5
"If the array has "holes" (that is, nil values between other non-nil values),
then #t can be any of the indices that directly precedes a nil value (that is,
it may consider any such nil value as the end of the array)."
Returning 128 is within specification (as well as returning 2 would be).
Regards
Jan Behrens