[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Lua 5.2 sequence definition - clarification needed
- From: Lorenzo Donati <lorenzodonatibz@...>
- Date: Wed, 29 Jun 2011 09:25:23 +0200
Hi all!
* 1st point
Section 3.4.6 of Lua 5.2 refman says:
"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 integer n."
and later:
"Note, however, that non-numeric keys do not interfere with whether a
table is a sequence."
From the first sentence I get that also non-positive numeric keys don't
interfere with the table being a sequence (right?). Wouldn't it be worth
adding this note to the second sentence? I.e.:
"Note, however, that non-numeric keys *or non-positive numeric keys* do
not interfere with whether a table is a sequence."
* 2nd point
This is maybe nitpicking, but anyway:
as someone else already pointed out in an old thread (IIRC), the first
cited sentence above assumes that an empty sequence is a table that has
no positive numeric keys. In this case the above definition would hold
with the set being {1..0}, i.e. the empty set. But the empty set could
also be represented as {1..-1}, or {1..-4} with that notation. Therefore
someone could infer that for empty sequences the length could be either
0, -1 or -4.
Therefore I would modify slightly the definition:
"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."
This would rule out that (admittedly unintuitive, but correct)
misinterpretation.
Cheers.
-- Lorenzo