What I find interesting is that an explicitly set nil value is not considered a "hole" in the table.
According to the documentation that shouldn't be. A bug?
By the way, I find the documentation wording very confusing:
The length of a table
t
is defined to be any
integer index
n
such that
t[n]
is not
nil and
t[n+1]
is
nil;
moreover, if
t[1]
is
nil,
n
***may*** be zero.
For a regular array, with non-nil values from 1 to a given
n
,
its length is exactly that
n
,
the index of its last value.
If the array has "holes"
(that is,
nil values between other non-nil values),
then
#t
***may*** 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).