|
On 8/19/2016 10:13 AM, Viacheslav Usov wrote:
This distinction is made in Lua's manual, too. Unless a |__len| metamethod is given, the length of a table |t| is only defined if the table is a /sequence/, that is, the set of its positive numeric keys is equal to/{1..n}/ for some non-negative integer /n/. In that case, /n/ is its length.
What you missed is the phrase "set of its positive numeric keys". That does not require that there be no non-positive numeric keys. Or that there be no keys that are not numbers at all, perhaps strings or any other type allowed as a key.
That distinction is important.So t={1,2,3,4,5, x=13, y=print, [{}]="hard to index"} is certainly a sequence. It remains a sequence if elements at t[0] or t[-1] are defined as well, but those non-positive numbered keys are not part of the sequence.
-- Ross Berteig Ross@CheshireEng.com Cheshire Engineering Corp. http://www.CheshireEng.com/ +1 626 303 1602