That's not where this ambiguity usually happens. Apart from aforementionedLua 5.2.3 Copyright (C) 1994-2013 Lua.org, PUC-Rio
situation with
arguments of the function, most of the times where people relied on this
behavior is something
like this:
t = {<dynamic value>, <dynamic value calculated as nil>, <another dynamically
calculated value>}
i.e. the table is strictly formed as an array (no explicit keys), but some of
the values are
dynamically calculated as nil, leaving "holes".
Then this table is passed somewhere, where it is treated with assumption that
it is an array,
including inserting new elements (expecting that they will be added to the
end), calculating
the length of the array (with the length being an important information), etc.
In this situation the behavior always was consistent and predictable.